Имя: Пароль:
1C
1С v8
Не заполняется табличная часть документа "Установка цен номенклатуры".
, , ,
0 Eeelena
 
09.11.15
07:34
Здравствуйте!

Создаю обработку заполнения ТЧ документа "Установка цен номенклатуры", добавляю записи в ТЧ Товары, но  ТЧ в документе не заполняется. Пробовала заполнить Таблицу значений ТаблицаЦен, но там нет колонки цена. Подскажите, пожалуйста, как правильно нужно заполнить ТЧ?
1 Любопытная
 
09.11.15
07:36
Посмотреть как она заполняется при добавлении номенклатуры в ТЧ.
Конфигурация какая?
2 Eeelena
 
09.11.15
07:38
(1) УТ 10.3
3 Любопытная
 
09.11.15
07:39
А, ну там все просто - сначала надо заполнить таблицу цен видами цен. Потом для каждой пары номенклатура - вид цен в ТЧТовары добавляется строка с ценой на номенклатуру.
4 ASV
 
09.11.15
07:40
в ТаблицаЦен должен быть список используемых типов цен
5 Eeelena
 
09.11.15
07:41
(3) (4) не могли бы вы привести пример, пожалуйста, как правильно, просто я и ТЧ Товары заполняла и Таблицу цен, все равно не заполняется
6 kn
 
09.11.15
07:42
ТЧ Товары и ТаблицаЦен - взаимосвязанные таблицы, в Товарах указывается ИндексСтрокиТаблицыЦен
7 mehfk
 
09.11.15
07:49
(0) Все там заполняется. Нужно скопипастить во внешнюю обработку код, который выполняется в ПриОткрытии (или ПередОткрытием, не помню). Потому как на форме - ТЗ и нужно перезаполнять именно ее.
8 Eeelena
 
09.11.15
08:01
(7) сделала вот так
мСоответствиеТиповЦен = Новый Соответствие;
// Сформируем и заполним таблицу цен.
    Для Каждого СтрокаТипаЦен Из Объект.ТипыЦен Цикл
        НомерСоответствияТекущейКолонки = Объект.ТипыЦен.Индекс(СтрокаТипаЦен);
        мСоответствиеТиповЦен.Вставить(СтрокаТипаЦен.ТипЦен, НомерСоответствияТекущейКолонки);

        Если ФормаДокумента.ТаблицаЦен.Колонки.Найти("цена" + НомерСоответствияТекущейКолонки) = Неопределено Тогда
            ФормаДокумента.ТаблицаЦен.Колонки.Добавить("цена" + НомерСоответствияТекущейКолонки, ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15, 2, ДопустимыйЗнак.Неотрицательный), СокрЛП(СтрокаТипаЦен.ТипЦен), 10);
        КонецЕсли;
        Если ФормаДокумента.ТаблицаЦен.Колонки.Найти("СпособРасчета" + НомерСоответствияТекущейКолонки) = Неопределено Тогда
            ФормаДокумента.ТаблицаЦен.Колонки.Добавить("СпособРасчета"+НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("ПеречислениеСсылка.СпособыРасчетаЦены"), "Способ расчета", 8);
        КонецЕсли;
        Если ФормаДокумента.ТаблицаЦен.Колонки.Найти("валюта" + НомерСоответствияТекущейКолонки) = Неопределено Тогда
            ФормаДокумента.ТаблицаЦен.Колонки.Добавить("валюта" + НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("СправочникСсылка.Валюты"), "Валюта", 8);
        КонецЕсли;
        Если ФормаДокумента.ТаблицаЦен.Колонки.Найти("единица" + НомерСоответствияТекущейКолонки) = Неопределено Тогда
            ФормаДокумента.ТаблицаЦен.Колонки.Добавить("единица" + НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("СправочникСсылка.ЕдиницыИзмерения"), "Единица", 8);
        КонецЕсли;
        Если ФормаДокумента.ТаблицаЦен.Колонки.Найти("процент" + НомерСоответствияТекущейКолонки) = Неопределено Тогда
            ФормаДокумента.ТаблицаЦен.Колонки.Добавить("процент" + НомерСоответствияТекущейКолонки, ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15, 2), "% скидки (наценки)", 8);
        КонецЕсли;
    КонецЦикла;

А потом заполняю ТЧ товары, при заполнении выходит ошибка {Документ.УстановкаЦенНоменклатуры.Форма.ФормаДокумента.Форма(1620)}: Поле объекта не обнаружено (единица0)
                ЯчейкаЕдиницы.ОтметкаНезаполненного = ЭтоНеУслуга
9 mehfk
 
09.11.15
08:09
10 Eeelena
 
09.11.15
08:18
(9) спасибо, огромное))) я как раз только разобралась, в итоге сделала так

    ФормаДокумента=Объект.ПолучитьФорму("ФормаДокумента");
    ФормаДокумента.ТаблицаЦен.Очистить();
    
    
    
    Для Каждого ТипЦен Из Объект.ТипыЦен Цикл
        ТипЦенДокумента=ТипЦен.ТипЦен;
        Сообщить(ТипЦенДокумента);
    КонецЦикла;    


мСоответствиеТиповЦен = Новый Соответствие;
// Сформируем и заполним таблицу цен.
    Для Каждого СтрокаТипаЦен Из Объект.ТипыЦен Цикл
        НомерСоответствияТекущейКолонки = Объект.ТипыЦен.Индекс(СтрокаТипаЦен);
        мСоответствиеТиповЦен.Вставить(СтрокаТипаЦен.ТипЦен, НомерСоответствияТекущейКолонки);

        Если ФормаДокумента.ТаблицаЦен.Колонки.Найти("цена" + НомерСоответствияТекущейКолонки) = Неопределено Тогда
            ФормаДокумента.ТаблицаЦен.Колонки.Добавить("цена" + НомерСоответствияТекущейКолонки, ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15, 2, ДопустимыйЗнак.Неотрицательный), СокрЛП(СтрокаТипаЦен.ТипЦен), 10);
        КонецЕсли;
        Если ФормаДокумента.ТаблицаЦен.Колонки.Найти("СпособРасчета" + НомерСоответствияТекущейКолонки) = Неопределено Тогда
            ФормаДокумента.ТаблицаЦен.Колонки.Добавить("СпособРасчета"+НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("ПеречислениеСсылка.СпособыРасчетаЦены"), "Способ расчета", 8);
        КонецЕсли;
        Если ФормаДокумента.ТаблицаЦен.Колонки.Найти("валюта" + НомерСоответствияТекущейКолонки) = Неопределено Тогда
            ФормаДокумента.ТаблицаЦен.Колонки.Добавить("валюта" + НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("СправочникСсылка.Валюты"), "Валюта", 8);
        КонецЕсли;
        Если ФормаДокумента.ТаблицаЦен.Колонки.Найти("единица" + НомерСоответствияТекущейКолонки) = Неопределено Тогда
            ФормаДокумента.ТаблицаЦен.Колонки.Добавить("единица" + НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("СправочникСсылка.ЕдиницыИзмерения"), "Единица", 8);
        КонецЕсли;
        Если ФормаДокумента.ТаблицаЦен.Колонки.Найти("процент" + НомерСоответствияТекущейКолонки) = Неопределено Тогда
            ФормаДокумента.ТаблицаЦен.Колонки.Добавить("процент" + НомерСоответствияТекущейКолонки, ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15, 2), "% скидки (наценки)", 8);
        КонецЕсли;
    КонецЦикла;


Объект.Товары.Очистить();
Сообщить(Объект);

    Для row = 1 По ВсегоСтрок Цикл
        ЗначениеАртикул=Excel.Cells(row,Артикул).Value;
        ЗначениеЦена=Excel.Cells(row,Цена).Value;
        Сообщить(ЗначениеАртикул);
        Сообщить(ЗначениеЦена);
        СтрокаТЧ=Объект.Товары.Добавить();
        
        СтрокаТЧ.ТипЦен=ТипЦенДокумента;

        СтрокаТЧ.Номенклатура=Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Строка(ЗначениеАртикул));
        СтрокаТЧ.Цена=ЗначениеЦена;
        

        СтрокаТЧ.Валюта=Справочники.Валюты.НайтиПоКоду("643");
        СтрокаТЧ.ЕдиницаИзмерения=СтрокаТЧ.Номенклатура.ЕдиницаХраненияОстатков;
                
    КонецЦикла;
            
    ТаблицаТоваров = Объект.Товары.Выгрузить();
    
    ТаблицаТоваров.Сортировать("ИндексСтрокиТаблицыЦен, Номенклатура, ХарактеристикаНоменклатуры");

    ТекущийИндексСтрокиТаблицыЦен = Неопределено;
    НоваяСтрока = Неопределено;
    Для Каждого СтрокаТаблицыТоваров Из ТаблицаТоваров Цикл
        Если ТекущийИндексСтрокиТаблицыЦен <> СтрокаТаблицыТоваров.ИндексСтрокиТаблицыЦен
         Или НоваяСтрока.Номенклатура <> СтрокаТаблицыТоваров.Номенклатура
         Или НоваяСтрока.ХарактеристикаНоменклатуры <> СтрокаТаблицыТоваров.ХарактеристикаНоменклатуры Тогда
            НоваяСтрока = ФормаДокумента.ТаблицаЦен.Добавить();
            НоваяСтрока.Номенклатура = СтрокаТаблицыТоваров.Номенклатура;
            НоваяСтрока.ХарактеристикаНоменклатуры = СтрокаТаблицыТоваров.ХарактеристикаНоменклатуры;
            ТекущийИндексСтрокиТаблицыЦен = СтрокаТаблицыТоваров.ИндексСтрокиТаблицыЦен;
        КонецЕсли;

        НомерСоответствияТекущейКолонки = мСоответствиеТиповЦен[СтрокаТаблицыТоваров.ТипЦен];

        НоваяСтрока["цена" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.Цена;
        НоваяСтрока["СпособРасчета" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.СпособРасчетаЦены;
        НоваяСтрока["валюта" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.Валюта;
        НоваяСтрока["единица" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.ЕдиницаИзмерения;
        НоваяСтрока["процент" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.ПроцентСкидкиНаценки;
    КонецЦикла;

теперь все заполняется)))
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn