Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как добавить новый реквизит товара в табличную часть расходной накладной 1с 7.7 конф 7.7.003          
ZUBR Подменю пользователя
сообщение 27.09.19, 1:17
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

Доброй ночи. Задача следующая. Есть справочник Номенклатура. В нем товары и услуги с ценами. Я создал в форме элемента справочника дополнительные реквизиты КЗП - коэфициент зарплаты и ЗП - сама зарплата. На каждый товар я могу проставить коэфициент и вычислить часть, которая будет идти работнику. В справочние я это уже сделал. В список подбора добавил колонку ЗП и при подборе она появляется с правильными вычисленными для каждого товара и услуги значениями. Теперь мне в табличную часть РасходнойНакладной нужно добавить колонку ЗП и соответствующие значения. Колонку я уже добавил. Но что прописать в формуле, чтобы в ней при подборе из списка подбора проставлялось значение ЗП из справочника Номенклатура по каждому товару? Я смотрел на формулы соседних колонок. Там очень сложно выбираются значения. Через глобальный модуль. Черт ногу сломит. Нельзя ли это решить попроще. Ведь товар в справочнике, реквизит справочника ЗП уже создан и автоматически заполнен, реквизит табличной части Расходной накладной ЗП тоже создан, колонка добавлена, в списке подбора значение ЗП добавлено и появляется. Как его перенести в колонку ЗП табличной части РасходнойНакладной? Спасибо!

Pepe Подменю пользователя
сообщение 27.09.19, 11:30
Сообщение #2

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1434
Из: Ужгород
Спасибо сказали: 761 раз
Рейтинг: 230

Также как и цену товара или базовую единицу измерения. (Товар.ЗП например).


Макс1С Подменю пользователя
сообщение 27.09.19, 14:19
Сообщение #3

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 189
Из: Днепр
Спасибо сказали: 62 раз
Рейтинг: 58.6

ZUBR @ Сегодня, 2:17 * ,
я бы ещё на количество умножал, на случай если товар/услуга в документе не в единственном экземпляре

Процедура ИзмТМЦ() // процедура из формулы элемента формы
    Если ТМЦ.Выбран()=1 Тогда
        ......        
        ЗП = ТМЦ.ЗП * Кво;
    КонецЕсли;
КонецПроцедуры

ZUBR Подменю пользователя
сообщение 27.09.19, 15:07
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

Pepe @ Сегодня, 12:30 * , колонка ЗП в табличной части выводится пустая. То есть, реквизит ЗП справочника конкретного товара, вычисленный в справочнике, не переносится в табличную часть документа РасходнаяНакладная. Когда я нажимаю подбор по каталогу, появляется таблица справочника с товарами, где есть своя колонка ЗП и в ней проставлены вычисленные значения ЗП для каждого товара. Колгда я выбираю товар, он появляется в таблице внизу документа. Но там только две колонки - товар и количество. Затем я переношу отобранные позиции в документ, но колонка ЗП табличной части РасходнойНакладной остается пустой. Я в формуле колонки прописывал и Товар.ЗП, и Справочник.Номенклатура.Товар.ЗП, все равно не появляется ничего...


Макс1С @ Сегодня, 15:19 * ,
на элементе формы я ничего не прописывал. Вообще. Что такое ТМЦ? Если можно, подскажите, что нужно прописать.

Макс1С Подменю пользователя
сообщение 27.09.19, 17:25
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 189
Из: Днепр
Спасибо сказали: 62 раз
Рейтинг: 58.6

ZUBR @ Сегодня, 16:07 * ,
В форме подбора видно добавленную колонку потому, что это всё поля одной таблицы (справочник товаров) , а ТЧ документа это совсем другая таблица (и физически тоже), в ней есть свои поля - Товар мы заполняем вручную, но программа не знает что поле "ЗП" должно заполнятся из реквизита товара.

на элементе уже всё прописано, в формуле указана процедура которая вызывается после выбора Товара

Вот в ней и надо прописать заполнение добавленной колонки из реквизита.
Процедура ИзмТМЦ() // процедура из формулы элемента формы
    Если ТМЦ.Выбран()=1 Тогда
        ......        
        ЗП = ТМЦ.ЗП * Кво;
    КонецЕсли;
КонецПроцедуры

Этот пример из бухгалтерии, в торговле может по другому называться процедура и колонка с товаром (ТМЦ - название справочника товаров и реквизита ТЧ в расходной накладной в бухгалтерии, сейчас нет под рукой торговли)

Также стоит обратить внимание на следующую процедуру:
Процедура ОбработкаПодбора(Выб)
    Если глОбработатьПодбор(Контекст,Выб) = 1 Тогда
        ИзмТМЦ();
    КонецЕсли;
КонецПроцедуры

Это предопределенная процедура, срабатывает когда добавляем товары через подбор. Ключевой момент что в ней вызывается та же процедура(ИзмТМЦ() - у вас может быть другая), что и при ручном изменении. Это правильный подход, так как позволяет в одном месте менять логику поведения программы в разных, но похожих событиях.

ZUBR Подменю пользователя
сообщение 27.09.19, 23:15
Сообщение #6

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

Макс1С @ Вчера, 18:25 * ,
не, я так и не нашел, как это сделать. Долго копался в коде. В этой конфигурации добавление товара в таблицу РасходнойНакладной прописано в глобальном модуле. Причем очень сложно. Со ссылками на другие процедуры модуля. Тут есть справочник Номенклатура, ему подчинен справочник Цены. Очень трудно постичь. Если не найду более простой способ, тогда пойду каким-то другим путем...

ZUBR Подменю пользователя
сообщение 28.09.19, 18:38
Сообщение #7

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

Чтобы не разбираться в хитросплетениях кода разработчика данной программы, я решил упростить задачу. В документе РасходнаяНакладная в табличную часть я добавляю новую колонку ЗП. В справочник Товар.Номенклатура добавляю новый реквизит КЗП. Теперь мне нужно каждую позицию СуммаСНДС умножить на соответствующее значение КЗП из справочника и поместить его в колонку табличной части ЗП. Для этого на форме РасходнойНакладной я поместил кнопку Виконав и пытаюсь написать в модуле формы процедуру Виконав.

Для начала я упрощаю задачу - не умножаю СуммаСНДС на значение из справочника, потому что не знаю, как написать ссылку на это значение, а умножаю просто на число 0.4 Казалось бы, все должно работать. Но почему-то заполняется только ячейка той строки, на которой в данный момент стоит курсор. Если хочешь заполнить другую ячейку - поставь курсор на соответствующую строку. И опять нажми кнопку. Привожу код. Код написан в модуле формы РасходнаяНакладная.

Процедура Виконав()       //расчет зп по документу
СПР = СоздатьОбъект ("Справочник.Номенклатура");
    Док = ТекущийДокумент();

Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
  ЗП = СуммаСНДС*0.4;

КонецЦикла;    
КонецПроцедуры


Почему не заполняется колонку автоматически?
И как написать ссылку на справочник? В справочнике Номенклатура есть товар, который прописан в табличной части РасходнойНакладной. Название реквизита ТЧ - "Товар". Соответствующий реквизит элемента справочника - "ПолнНазвание". На этой же странице справочника, где размещены реквизиты ПолнНазвание, Код, Артикул и др. я добавил реквизит КЗП и прописал в него значение из программы. Мне нужно, чтобы СуммаСНДС документа РасходнойНакладной была умножена на соответствующий КЗП справочника и результат помещен в соответствующую ячейку колонки ЗП.
Пробовал следующие варианты:

ЗП = СуммаСНДС*СПР.ПолнНаименование("Товар").КЗП;

ЗП = СуммаСНДС*СПР.Товар.КЗП;

В общем, не получается. И код, казалось бы, простой. Но заполняется только одна ячейка и не понятно, как прописать ссылку. Буду всем благодарен за науку. Нелегкая это работа - из болота тащить бегемота...

Спасибо!





Макс1С Подменю пользователя
сообщение 28.09.19, 19:49
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 189
Из: Днепр
Спасибо сказали: 62 раз
Рейтинг: 58.6

ZUBR @ Сегодня, 19:38 * ,
В 7.7. надо всё проще, немного усложнили.
Процедура Виконав()       //расчет зп по документу
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
  ЗП = СуммаСНДС*0.4;
//или
  ЗП = СуммаСНДС*Товар.КЗП; // где "Товар" - имя колонки в ТЧ; "КЗП" - имя добавленного в товар реквизита
КонецЦикла;    
КонецПроцедуры

А в остальном, если по примерам не понятно и не получается, то без 100 грамм вашего 1cv7.md не разобраться.

В хитросплетениях не надо разбираться, всё должно происходить в форме документа в процедуре указанной в формуле поля ввода товара

Спасибо сказали: ZUBR,

ZUBR Подменю пользователя
сообщение 28.09.19, 20:30
Сообщение #9

Завсегдатай
****
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3

Макс1С @ Сегодня, 20:49 * , да что же это такое! Действительно заработало! Неужели все так просто? Признаюсь, я полдня бился(((
Макс, большущее-большущее спОсибо!!! 32541510.gif icon_beer17.gif

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 15:48
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!