![]() |
![]() |
![]() |
|
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) ... кто мЕшает собрать той же "дополнительной формой" поставить галочки, собрать "список цен с галочками" и положить на "форму" или в "ТЧдокумента" ... и при записи в регСвед записывать столько раз сколько указано ТипЦен ...
... пОнятно ... вопрос риторический ... есть ТО, что ЕСТЬ ... ВСЕМ большое спАсибо и ОГРОМНАЯ блАгодарность ... ... с Уважением Александр Шишкин (Шёпот теней) ... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |