Имя: Пароль:
1C
1С v8
Перенос из одной ТЧ в другую (обработка)
0 WhiteDragon93
 
15.05.13
22:38
Пишу обработку для заполнения ТЧ документа ТЧ другого документа (точнее ее частью). Документ-основание - оприходование товаров, документ-приемник - установка цен номенклатуры. Конфа - Комплексная автоматизация.
Я уже совсем затупил и готов получить за свою тупость :)

Вот код:

Процедура КнопкаВыполнитьНажатие(Кнопка)

ДокументОснование = ЭтаФорма.ДокументОснование;
ДокументОбъект = ЭтаФорма.ДокументОбъект;
ТЧОбъекта = ДокументОбъект.Товары;
   
Для каждого Стр Из ДокументОснование.Товары Цикл

НоваяСтрока = ТЧОбъекта.Добавить();
НоваяСтрока.Номенклатура = Стр.Номенклатура;
НоваяСтрока.НомерСтроки = Стр.НомерСтроки;

КонецЦикла;

ЭтаФорма.Закрыть();

КонецПроцедуры
1 zak555
 
15.05.13
22:42
из кода видно, что ты пытаешь скопировать ТЧ основание в документ
2 WhiteDragon93
 
15.05.13
22:46
(1) тяжко без отладчика начинающему
3 ШишкинЛес
 
15.05.13
22:46
ОбъектДок = ДокументОбъект.ПолучитьОбъект();
НоваяСтрока = ОбъектДок.Товары.Добавить();
4 Живой Ископаемый
 
15.05.13
22:51
2(2) как это? куда дел отладчик? или силу воли воспитываешь?
5 WhiteDragon93
 
15.05.13
22:56
(4) это внешняя зарегистрированная обработка
6 Dionis Sergeevich
 
15.05.13
22:58
(5) Сделай форму, открой ее не через внешние обработки и отлаживай =)

Да, и Документ в коде не записан
7 WhiteDragon93
 
15.05.13
23:00
(6) он записывается при вызове обработки)
8 WhiteDragon93
 
15.05.13
23:04
Вот что за дела?

Модуль объекта:

Перем ДокументОбъект Экспорт;
   
Процедура Инициализировать(Объект,ИмяТабличнойЧасти,ТабличноеПолеОбъекта) Экспорт
   
   ДокументОбъект = Объект;
   ТЧДокумента = Объект["Товары"];
   ТПДокумента = ТабличноеПолеОбъекта;
   
   Форма = ПолучитьФорму("Основная");
   Форма.Открыть();
   
КонецПроцедуры


Модуль формы:

Процедура КнопкаВыполнитьНажатие(Кнопка)

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

НоваяСтрока = ТЧОбъекта.Добавить();
НоваяСтрока.Номенклатура = Стр.Номенклатура;
НоваяСтрока.НомерСтроки = Стр.НомерСтроки;

КонецЦикла;

ЭтаФорма.Закрыть();

КонецПроцедуры
9 Dionis Sergeevich
 
15.05.13
23:08
В ссылку пишешь. Говорили же - объект получи
10 WhiteDragon93
 
15.05.13
23:09
(9) {Форма.Основная.Форма(5)}: Метод объекта не обнаружен (Получить)
ДокОбъект = ДокументОбъект.Ссылка.Получить();
11 Dionis Sergeevich
 
15.05.13
23:10
ОбъектДок = ДокументОбъект.ПолучитьОбъект();
12 WhiteDragon93
 
15.05.13
23:14
(11)
{Форма.Основная.Форма(5)}: Ошибка при вызове метода контекста (ПолучитьОбъект)
ДокОбъект = ДокументОбъект.ПолучитьОбъект();
по причине:
Элемент не выбран!
13 Dionis Sergeevich
 
15.05.13
23:15
ДокументОбъект у тебя полеввода? Так и вводи туда документ =)
14 Dionis Sergeevich
 
15.05.13
23:15
Ладно, кидай обработку - гляну
15 WhiteDragon93
 
15.05.13
23:17
16 Dionis Sergeevich
 
15.05.13
23:38
ДокументОснование = ЭтаФорма.ЭлементыФормы.пДокументОснование.Значение;
   ДокОбъект = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
   ДокОбъект.Дата = ТекущаяДата();
   ДокОбъект.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
   ТЧОбъекта = ДокОбъект.Товары;
       
   Для каждого Стр Из ДокументОснование.Товары Цикл

       НоваяСтрока = ТЧОбъекта.Добавить();
       НоваяСтрока.Номенклатура = Стр.Номенклатура;
       //НоваяСтрока.НомерСтроки = Стр.НомерСтроки;
       НоваяСтрока.Цена = Стр.Цена;
       

   КонецЦикла;

   ДокОбъект.Записать();
   ФормаНовогоДокумента = ДокОбъект.ПолучитьФорму("ФормаДокумента");
   ФормаНовогоДокумента.Открыть();
   
   ЭтаФорма.Закрыть();
17 Dionis Sergeevich
 
15.05.13
23:38
И поубивай реквизиты формы.

Велком, че -_-
18 WhiteDragon93
 
15.05.13
23:45
(17) с ценой не прокатит, фирма и закупочную цену вводит :) спасибо большое, сейчас попробую
19 WhiteDragon93
 
15.05.13
23:52
(17) у меня как всегда, то ли лыжи не едут, то ли...

если убрать все, связанное с ценой - "документ записан не корректно"

если оставить как есть - {Форма.Основная.Форма(7)}: Поле объекта не обнаружено (ТипЦен)
   ДокОбъект.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
20 Dionis Sergeevich
 
15.05.13
23:55
Комплексной под рукой нету. Посмотри документ Установка цен номенклатуры - там должен быть реквизит ТипЦен
21 Dionis Sergeevich
 
15.05.13
23:56
Может он там называется "ТипыЦен" или еще как
22 WhiteDragon93
 
16.05.13
00:00
(21) мне по сути нужно только номенклатуру в установку цен перенести, цену сами введут
23 hhhh
 
16.05.13
00:00
он в табличной части. во всех конфах.
24 Dionis Sergeevich
 
16.05.13
00:01
(22) Убирай тогда строку "НоваяСтрока.Цена = Стр.Цена;"

Но тип цен нужно будет указать
25 Dionis Sergeevich
 
16.05.13
00:03
26 WhiteDragon93
 
16.05.13
00:03
(23) нет его в ТЧ, там есть список типов цен, при выборе которых (например 2: Розничная и Закупочная) создаются две колонки (соответственно, тоже 2)
27 hhhh
 
16.05.13
00:04
(22) Для каждого Стр Из ДокументОснование.Товары Цикл

       НоваяСтрока = ТЧОбъекта.Добавить();
       НоваяСтрока.Номенклатура = Стр.Номенклатура;
 
       НоваяСтрока.ТипЦен = Розничные;
       
       НоваяСтрока = ТЧОбъекта.Добавить();
       НоваяСтрока.Номенклатура = Стр.Номенклатура;
 
       НоваяСтрока.ТипЦен = Закупочные;

     НоваяСтрока = ТЧОбъекта.Добавить();
       НоваяСтрока.Номенклатура = Стр.Номенклатура;
 
       НоваяСтрока.ТипЦен = Оптовые;

   КонецЦикла;
28 hhhh
 
16.05.13
00:04
(26) есть, глаза разуй.
29 Dionis Sergeevich
 
16.05.13
00:05
+(25) БП 2.0.37.8
30 WhiteDragon93
 
16.05.13
00:07
(26) он есть, но что, если выбирается 2 типа цен?

http://s018.radikal.ru/i524/1305/4a/eafdbc0c49df.jpg
31 Dionis Sergeevich
 
16.05.13
00:07
(30) -> (27)
32 Mashinist
 
16.05.13
00:11
(31) то в ТЧ будет две строки с одним товаром, но с разными типами цен и разной ценой соответсвенно
33 Mashinist
 
16.05.13
00:12
тьху (32) -> (30)
34 WhiteDragon93
 
16.05.13
00:16
(33) а проведется документ, если будет дублироваться номенклатура и у каждой не будет по одному типу?

http://s45.radikal.ru/i110/1305/51/ab3beda45f4e.jpg
35 Dionis Sergeevich
 
16.05.13
00:18
(34) будет как в (19) если не введешь тип цены
36 WhiteDragon93
 
16.05.13
00:19
ДокументОснование = ЭтаФорма.ЭлементыФормы.пДокументОснование.Значение;
   ДокОбъект = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
   ДокОбъект.Дата = ТекущаяДата();
   Розничные = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
   Закупочные = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупочная");
   ТЧОбъекта = ДокОбъект.Товары;
       
   Для каждого Стр Из ДокументОснование.Товары Цикл

       НоваяСтрока = ТЧОбъекта.Добавить();
       НоваяСтрока.Номенклатура = Стр.Номенклатура;
 
       НоваяСтрока.ТипЦен = Розничные;
       
       НоваяСтрока = ТЧОбъекта.Добавить();
       НоваяСтрока.Номенклатура = Стр.Номенклатура;
 
       НоваяСтрока.ТипЦен = Закупочные;

  //   НоваяСтрока = ТЧОбъекта.Добавить();
  //     НоваяСтрока.Номенклатура = Стр.Номенклатура;
  //
  //     НоваяСтрока.ТипЦен = Оптовые;

   КонецЦикла;

   ДокОбъект.Записать();
   ФормаНовогоДокумента = ДокОбъект.ПолучитьФорму("ФормаДокумента");
   ФормаНовогоДокумента.Открыть();
   
   ЭтаФорма.Закрыть();


Документ Установка цен номенклатуры 00000000011 от 16.05.2013 0:18:24 был записан некорректно! Информация о ценах очищена.
37 Dionis Sergeevich
 
16.05.13
00:23
Смотри обязательные для заполнения поля и реквизиты документа. "красненькие" в форме документа в режиме предприятия
38 WhiteDragon93
 
16.05.13
00:36
(37) там есть способ расчета цены, не знаю откуда он берется.
39 Dionis Sergeevich
 
16.05.13
00:36
(38) Тип его посмотри - узнаешь
40 WhiteDragon93
 
16.05.13
00:37
(39) нашел, это перечисление
41 WhiteDragon93
 
16.05.13
00:43
(39)это, по ходу, глупая затея, т.к. если будет происходит то, что написано в (32), то смысл обработки?
42 Dionis Sergeevich
 
16.05.13
00:50
(41) Сначала надо о смысле думать. А потом делать
43 WhiteDragon93
 
16.05.13
00:51
(42) смысл обработки - заполнить установку цен номенклатурой, для того, чтобы не выбирать дважды, скажем 300 позиций
44 WhiteDragon93
 
16.05.13
01:01
(42) да и я - дебил... при выборе номенклатуры, автоматически заполняются все обязательные реквизиты ТЧ. Главное, если возможно, построчно передать ссылки на номенклатуру.
45 hhhh
 
16.05.13
04:18
(44) то, что видишь на форме там - это не ТЧ. Это левая таблица значений, заполняемая на лету.

ТЧ смотри в конфигураторе.
46 ivanov-i-i
 
16.05.13
06:32
(0) В документе есть кнопка Заполнить, далее Заполнить по поступлению. Смотри как сделано для документа Поступление, думаю переделать под Оприходование не составит большого труда.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн