Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
26 мая 2024, 11:06

Работа с таблицами справочника

Автор WindFree, 01 дек 2010, 12:41

0 Пользователей и 1 гость просматривают эту тему.

WindFree

В стандартной конфигурации Торговля и Склад имеется таблица Справочники.Скидки. В ней имеются поля Код, Наименование, Процент.

Подскажите пожалуйста как прописать процедуру изменения значения Процент в форме Документы.ЧекККМ когда в Поле со списком на этой форме выбрана строка из таблицы Справочники.Скидки.
Допустим при нажатии на Новую кнопку.

prog1c7.7

я по моему в танке.  ещё раз  объясните пожалуйста : что где хотите получить, что нажать -  прямо по пунктам.

WindFree

1) В таблице Справочники.Скидки заполняю строки
Наименование -> Петров
Процент -> 10
и так далее...
2) В Конфигураторе захожу Документы.ЧекККМ и на форме создаю кнопку Кнопка1
3) В данной форме ЧекККМ имеется поле ввода идентификатор "Скидка", тип Справочники.Скидки. В этом выбираю строку "Петров".
4) При нажатии на "Кнопка1" в таблице Справочник.Скидки должно меняться поле "Процент" допустим на число 20.

Это упрощенно. А так я не могу понять как происходит обращение к данной таблице через другую форму и элементы этой формы. Спасибо.


WindFree

4) При нажатии на "Кнопка1" в таблице Справочник.Скидки должно меняться поле "Процент" допустим на число 20 в строке с наименованием именно "Петров".

prog1c7.7

Кнопка не нужна.
Идея !!!ПРИМЕРНО!!! такая:

Процедура ПриОкончанииРедактированияСтроки()
Если Вопрос("Заводить скидку из документа в справочник", "Да+Нет",) = "Да" Тогда
Скидка.Процент  = Окр(((1 -   Сумма/(Цена * Количество)) * 100),3,1);
КонецЕсли;
КонецПроцедуры;

WindFree

Это верно. У меня только другой процедурой это сделано:

Процедура ПриИзмененииСкидки()
   Если СтараяСкидка<>Скидка Тогда
                    ПолучитьСтрокуПоНомеру(0);
                 Пока ПолучитьСтроку()=1 Цикл
                  Цена = глПолучитьЦену(Номенклатура, Константа.РозничныйТипЦен, ДатаДок, Единица, Валюта, Курс);
                  Сумма = Цена*Количество;             
               КонецЦикла;
            
      глПересчитатьСкидки(Контекст);               
               Если Пустоезначение(Скидка)=1 Тогда
               Пока ПолучитьСтроку()=1 Цикл
                  Цена = глПолучитьЦену(Номенклатура, Константа.РозничныйТипЦен, ДатаДок, Единица, Валюта, Курс);
                  Сумма = Цена*Количество;             
               КонецЦикла;
                КонецЕсли;


      СтараяСкидка = Скидка;
   КонецЕсли;
   Сообщить (СтараяСкидка); 
   Сообщить ("Скидка составила " + Скидка.Процент + " %");
   
   
КонецПроцедуры // ПриИзмененииСкидки()



Вопрос то у меня такой: Каким методом можно изменять данные в самй таблице справочника Справочник.Скидки. То есть система накопительных скидок. Пробили чек на выбранного человека из этого справочника и скидка у него увеличилась на определенный процент и записалась. Я год назад все это делал но утратил базу и щас не могу вспомнить какими методами идет обращение к таблицам справочника.


prog1c7.7

Скидка - это реквизит формы документа (справочник скидки), скидка.процент - это реквизит спр скидка.
Что значит "какими методами идет обращение к таблицам справочника" - обратись к  "скидка" :
скидка.процент = ...
А менять проценты в справ. исходя из пробитых Чеков можешь по разному (регистры например, чтоб не путалось ничего).
Опять не так понял?

WindFree

Спасибо большое за ответы!

Постараюсь объяснить проще.
Как мне записать в справочник в определенный номер строки значение "Процент"?
Допустим Процент в справочнике Скидки на пятой строке равен 10.
Как сделать чтобы Процент именно пятой стоки стал равен 15 и записался в справочник?
Вот на таком примере:

На форме в Поле ввода выбрана строка "Петров Петр Петрович" (эта строка из таблицы Справочники.Скидки)

Процедура поКнПроверка()   
   
  Скидафон = СоздатьОбъект("Справочник.Скидки");
   
     
   
  КонецПроцедуры // поКнПроверка();



Процедура ЗагрузитьВнешнююКомпоненту1();   
   ЗагрузитьВнешнююКомпоненту("amck1cchon.dll");

   AMC100K = СоздатьОбъект("AddIn.Amck1cChonExtension");
   
КонецПроцедуры // ЗагрузитьВнешнююКомпоненту()




WindFree

Все разобрался. Спасибо!
Мне нужно было вот это:

Процедура поКнПроверка()   
     
    СпрСкидка = СоздатьОбъект("Справочник.Скидки");
        
        СпрСкидка.НайтиПоНаименованию(Скидка.Наименование);
         СпрСкидка.Процент = 100;
    СпрСкидка.Записать();
      
  КонецПроцедуры // поКнПроверка();

WindFree


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск