| 
    
            
         
         | 
    
  | 
1С8 УТ программное открытие и заполнение докУстановкаЦен | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Шёпот теней    
     25.06.09 
            ✎
    15:47 
 | 
         
        мне нужно из екселя создать и заполнить Документы.УстановкаЦенНоменклатуры ...
  
        1. не получается открыть любой документ программно, типа: докУстЦен = Документы.УстановкаЦенНоменклатуры.НайтиПоНомеру("00000001039"); докУстЦен.ПолучитьФорму("ФормаДокумента").Открыть(); 1С пишет: "{Форма.ФормаОтчёта(45)}: Ошибка при вызове метода контекста (ПолучитьФорму): Элемент не выбран!" .. 2. создаю: документУстановкаЦенНоменклатуры = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); документУстановкаЦенНоменклатуры.ТипыЦен.Очистить(); новСтрТипыЦен = документУстановкаЦенНоменклатуры.ТипыЦен.Добавить(); новСтрТипыЦен.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000001"); документУстановкаЦенНоменклатуры.ПолучитьФорму("ФормаДокумента").Открыть(); ... документ открывается, заполнено поле ТипЦен, активна табличнаяЧасть но заполнять программно у меня не получается ... т.к. у документа есть табличныеЧасти.Товары а форме документа используется таблицаЗначений.ТаблицаЦен а как они взаимодействуют понять не могу... ... что? делаю не так ... ... подскАжите... ... воОотТааааКааааЯпроблема ...  | 
|||
| 
    1
    
        Ненавижу 1С    
     гуру 
    25.06.09 
            ✎
    15:49 
 | 
         
        (0) зачем тебе вообще форма то?     
         | 
|||
| 
    2
    
        butterbean    
     25.06.09 
            ✎
    15:50 
 | 
         
        (0) 1. в методе найтиПоНомеру() дату добавь
  
        2. там все просто, но не совсем :-) поковыряй этот документ  | 
|||
| 
    3
    
        Шёпот теней    
     25.06.09 
            ✎
    15:58 
 | 
         
        (1) а как....? для создания документа не нужно а после создания документа, нужно показать его пользователю ...
  
        (2) ... точно ... про дату -то я и забыл ... спасибо ...! ... та, что динамически создаётся ... но никак не могу сообразить ...(если я правильно сообразил) ... может есть у кого какой пример ...  | 
|||
| 
    4
    
        Шёпот теней    
     25.06.09 
            ✎
    16:28 
 | 
         
        .. видно, что в тз.ТаблицаЦен строки попадают из тч.Товары ...
  
        при заполнении: строкаТаблицаТовары.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("00000003076"); строкаТаблицаТовары.Цена = 12345; документУстановкаЦенНоменклатуры.ПолучитьФорму("ФормаДокумента").Открыть(); 1С пишет: {Документ.УстановкаЦенНоменклатуры.Форма.ФормаДокумента(597)}: Поле объекта не обнаружено (цена) НоваяСтрока["цена" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.Цена; чтоДелать...ЧТОделать....? ...воОот...  | 
|||
| 
    5
    
        kn    
     25.06.09 
            ✎
    16:31 
 | 
         
        ДокументОбъект = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
  
        ДокументОбъект.Дата = ДатаДок; НовТипЦен = ДокументОбъект.ТипыЦен.Добавить(); НовТипЦен.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Базовая");//или какая там я //и добавляешь в тчТовары данные из Excel тчТовары = ДокументОбъект["Товары"]; Объект = тчТовары.Добавить(); Объект["Номенклатура"] = Номенклатура; Объект["Валюта"] = ВалютаРубли; Объект["ЕдиницаИзмерения"] = Номенклатура.ЕдиницаХраненияОстатков; ТипЦены = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Базовая"); Объект["ТипЦен"] = ТипЦены; Объект["Цена"] = Цена; //записываешь документ Попытка ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); Исключение Сообщить("НЕ ЗАПИСАН"); КонецПопытки;  | 
|||
| 
    6
    
        butterbean    
     25.06.09 
            ✎
    16:33 
 | 
         
        (4) там есть реквизит в ТЧ, называется типа ИндексСтрокиТаблицыЦен, по нему совмещаются данные в ТаблицаЦен и Товары     
         | 
|||
| 
    7
    
        Шёпот теней    
     25.06.09 
            ✎
    16:34 
 | 
         
        (5) .... СПАСИБО ... пробую ...
  
        (6) ... спасибо ... понЯл ...  | 
|||
| 
    8
    
        Шёпот теней    
     25.06.09 
            ✎
    16:54 
 | 
         
        делаю так: 
  
        документУстановкаЦенНоменклатуры = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); документУстановкаЦенНоменклатуры.Дата = ТекущаяДата(); документУстановкаЦенНоменклатуры.ТипыЦен.Очистить(); новСтрТипыЦен = документУстановкаЦенНоменклатуры.ТипыЦен.Добавить(); ТипЦены = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000001"); новСтрТипыЦен.ТипЦен = ТипЦены; ТаблицаТовары = документУстановкаЦенНоменклатуры.Товары; строкаТаблицаТовары = ТаблицаТовары.Добавить(); тчТовары = документУстановкаЦенНоменклатуры["Товары"]; строкаТаблицаТовары = тчТовары.Добавить(); товар = Справочники.Номенклатура.НайтиПоКоду("00000003076"); строкаТаблицаТовары["Номенклатура"] = товар; строкаТаблицаТовары["Валюта"] = Справочники.Валюты.НайтиПоКоду("643"); строкаТаблицаТовары["ЕдиницаИзмерения"] = товар.ЕдиницаХраненияОстатков; строкаТаблицаТовары["ТипЦен"] = ТипЦены; строкаТаблицаТовары["Цена"] = 2345; Попытка документУстановкаЦенНоменклатуры.Записать(РежимЗаписиДокумента.Проведение); Исключение Сообщить("НЕ ЗАПИСАН"); КонецПопытки; документУстановкаЦенНоменклатуры.ПолучитьФорму("ФормаДокумента").Открыть(); 1С выдаЁт : Проведение документа: Установка цен номенклатуры 00000001048 от 25.06.2009 16:51:44 В строке номер "1" табличной части для типа цен "" не заполнена Номенклатура. В строке номер "1" табличной части для типа цен "" не заполнена Валюта. НЕ ЗАПИСАН а в конфигураторе на ту же строку с ценой: {Документ.УстановкаЦенНоменклатуры.Форма.ФормаДокумента(597)}: Поле объекта не обнаружено (цена) НоваяСтрока["цена" + НомерСоответствияТекущейКолонки] = СтрокаТаблицыТоваров.Цена; может ещё раз подскажете чего не хвАтает ... а то уже "НЕвижу" ... ...воооОооот...  | 
|||
| 
    9
    
        frum    
     25.06.09 
            ✎
    17:01 
 | 
         
        А не удобнее делать заполнение документа через меню Заполнить в документе? Щелкнул по подменю Заполнить, выбрал пункт загрузки из экселя, тебя спросили файл, выбрал, все загрузилось. По моему очень удобно.     
         | 
|||
| 
    10
    
        CyberNut    
     25.06.09 
            ✎
    17:06 
 | 
         
        Вырвано из контекста, но думаю будет понятно:
  
        ВыбрЦена1 и ВыбрЦена2 реквизиты диалога тип "ТипыЦенНоменклатуры" .......... Если НеЗагружатьЦены = Ложь Тогда Док = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); Док.Дата = ТекущаяДата(); Если ВыбрЦена1.Пустая() = Ложь Тогда ТипЦены = Док.ТипыЦен.Добавить(); ТипЦены.ТипЦен = ВыбрЦена1; КонецЕсли; Если ВыбрЦена2.Пустая() = Ложь Тогда ТипЦены = Док.ТипыЦен.Добавить(); ТипЦены.ТипЦен = ВыбрЦена2; КонецЕсли; КонецЕсли; ........... Если ВыбрЦена1.Пустая() = Ложь Тогда СтрокаДок = Док.Товары.Добавить(); СтрокаДок.Номенклатура = Ном.Ссылка; СтрокаДок.Валюта = ВалютаЗакупЦены1; СтрокаДок.ЕдиницаИзмерения = Ном.ЕдиницаХраненияОстатков; СтрокаДок.ТипЦен = ВыбрЦена1; СтрокаДок.Цена = Число(СокрЛП(ЗакупЦена1)); КонецЕсли; Если ВыбрЦена2.Пустая() = Ложь Тогда //2-я закупочная цена СтрокаДок = Док.Товары.Добавить(); СтрокаДок.Номенклатура = Ном.Ссылка; СтрокаДок.Валюта = ВалютаЗакупЦены2; СтрокаДок.ЕдиницаИзмерения = Ном.ЕдиницаХраненияОстатков; СтрокаДок.ТипЦен = ВыбрЦена2; СтрокаДок.Цена = Число(СокрЛП(ЗакупЦена2)); КонецЕсли; КонецЕсли; Кол = Кол + 1; Состояние("Обработано " + Строка(Кол) + " объектов."); КонецЕсли; КонецЦикла; ..........  | 
|||
| 
    11
    
        Шёпот теней    
     25.06.09 
            ✎
    17:11 
 | 
         
        (9) ... можно и так, конечно ... но еслиначал надо закончить .... ужжжж... буду "стрАдать" что не одолел ...
  
        (10) ... спАсибо ... пробую ...  | 
|||
| 
    12
    
        kn    
     25.06.09 
            ✎
    17:14 
 | 
         
        (8)вот эти строчки закомментируй(их в моем примере не было)и будет все ОК
  
        //ТаблицаТовары = документУстановкаЦенНоменклатуры.Товары; //строкаТаблицаТовары = ТаблицаТовары.Добавить();  | 
|||
| 
    13
    
        Шёпот теней    
     26.06.09 
            ✎
    08:07 
 | 
         
        (12) ... огромное СПАСИБО ... действительно без них всЁ ОК ...)))
  
        всем БОЛЬШОЕ спАсибо ...! подскажите ... а, почему док.УстЦен тАк заполняется в ТЗ через ТЧ ... понимаю, что "большое" видится на рАсстоянии, НО мне трУдно понять неОбходимость вВедения столь "сложного" мЕханизма заполнения дАнного дОкумента ...? ... воооот ...!  | 
|||
| 
    14
    
        kn    
     26.06.09 
            ✎
    08:28 
 | 
         
        При выборе нескольких типов цен чтобы пользователю было удобно вносить все одной строкой для этого сделано табличноеполе с динамическими создающимися колонками по числу типов цен, а потом уже эти данные переносятся в табличные части документа.Но в примере заполнение идет непосредственно табличных частей документа (ТипЦен и Товары)     
         | 
|||
| 
    15
    
        Шёпот теней    
     26.06.09 
            ✎
    08:34 
 | 
         
        (14) нууу... ЧТО такое несеолько типовЦен - группа аналитических признАков ...  ... ЕЁ как "группу" можно куда угодно "положить" и на форме и в ТЧ ...? или я чего-то НЕдоПОНИМАЮ ...?     
         | 
|||
| 
    16
    
        kn    
     26.06.09 
            ✎
    08:39 
 | 
         
        ну вот хочется занести сразу закупочные,оптовые,розничные цены и на выбор пользователя как их занести одной строчкой, а не по каждой вот и придумали 1с такой механизм     
         | 
|||
| 
    17
    
        Шёпот теней    
     26.06.09 
            ✎
    08:46 
 | 
         
        (16) ... кто мЕшает собрать той же "дополнительной формой" поставить галочки, собрать "список цен с галочками" и положить на "форму" или в "ТЧдокумента" ... и при записи в регСвед записывать столько раз сколько указано ТипЦен ...
  
        ... пОнятно ... вопрос риторический ... есть ТО, что ЕСТЬ ... ВСЕМ большое спАсибо и ОГРОМНАЯ блАгодарность ... ... с Уважением Александр Шишкин (Шёпот теней) ...  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |