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

Хранилище

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

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



> Коректне присвоєння родича (родитель) при обміні довідниками через OLE між базами          
mister-x Подменю пользователя
сообщение 20.03.12, 17:34
Сообщение #1

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Завантажую в рос. торгівлі (ред. 921) довідник Номенклатура по оле із бази бухгалтерія ТМЦ ред. 291. В торгівлі - це 5-рівневий довідник, в бух. - 3-рівневий.
Суть в коректному присвоєнні елемента-родича.
пробував так:
v7 = СоздатьОбъект("V77.Application");
    init = v7.Initialize(v7.RMTrade, , "");
    СпрТам = v7.EvalExpr("СоздатьОбъект(""Справочник.ТМЦ"")");
    СпрТам.ВыбратьЭлементы(1);
    СпрТам.ВключатьПодчиненные(1);
    СпрТам.ИспользоватьДату(ТекущаяДата(),1);
    //НачатьТранзакцию();
    Пока (СпрТам.ПолучитьЭлемент() = 1) Цикл
                 если СпрТам.пометкаУдаления()=1 тогда
                продолжить;
            конецесли;
            
            наим = сокрлп(СпрТам.Наименование);
            род = сокрлп(спрТам.Родитель.Наименование);
            если СпрТам.ЭтоГруппа()=1 тогда
                если спрНомГр1.НайтиПоНаименованию(наим,1)=0 тогда
                    спрНомГр1.НоваяГруппа();
                    спрНомГр1.Наименование=СпрТам.наименование;                
                    //спрНомГр1.Записать();
                    
                    если ПустоеЗначение(род)=0 тогда
                        если спрНомГр2.НайтиПоНаименованию(род,1)=0 тогда
                            спрНомГр2.НоваяГруппа();
                            спрНомГр2.Наименование = СпрТам.наименование;                
                            спрНомГр2.Записать();
                            спрНомГр1.Родитель = спрНомГр2.ТекущийЭлемент();
                        иначе
                            спрНомГр1.Родитель = спрНомГр2.ТекущийЭлемент();    
                        конецесли;    
                    конецесли;
                    спрНомГр1.Записать();
                конецесли;
            иначе
                если спрНомЭл.НайтиПоНаименованию(наим,1)=0 тогда
                    спрНомЭл.Новый();
                    спрНомЭл.Наименование = наим;                
                    спрНомЭл.ПолнНаименование= сокрлп(спрТам.ПолнНаименование);
                    спрНомЭл.СтавкаНДС = глЗначениеПоУмолчанию("ОсновнаяСтавкаНДС");
                    //Цена0 = СпрТам.Цена_Закуп;
                    //Цена1 = число(ВходExcel.ActiveSheet.Cells(СчетчикЦикла,8).Value);
                    //Цена2 = число(ВходExcel.ActiveSheet.Cells(СчетчикЦикла,9).Value);
                    если ПустоеЗначение(род)=0 тогда
                        если спрНомГр1.НайтиПоНаименованию(род,1)=0 тогда //если спрНомГр1.НайтиПоНаименованию(род,0,1)=0 тогда
                            спрНомГр1.НоваяГруппа();
                            спрНомГр1.Наименование = род;                
                            спрНомГр1.Записать();
                            спрНомЭл.Родитель = спрНомГр1.ТекущийЭлемент();
                        иначе
                            сообщить("елемент = "+спрНомЭл.наименование);
                            сообщить("група = "+спрНомГр1.ТекущийЭлемент());
                            спрНомЭл.Родитель = спрНомГр1.ТекущийЭлемент();
                            
                        конецесли;
                    конецесли;
....

а також пробував
НайтиПоНаименованию(род,0,1)

Коли відкритий довідник Номенклатура в торгівлі при завантаженні, то спочатку бачу коректно вложенні папки одна в одну - так як і в бух. При перевідкритті ієрархія злітає. Вищевказаним кодом 3-рівневий довідник ТМЦ у бух. перетворюється у 2-рівневий у торг.
при такому пошуку
СпрТам.ВыбратьЭлементы(0);
+
НайтиПоНаименованию(род,0,1)
- при спробі запису елементу 3-го рівня, кричить тут
сообщить("елемент = "+спрНомЭл.наименование);
                            сообщить("група = "+спрНомГр1.ТекущийЭлемент());
                            спрНомЭл.Родитель = спрНомГр1.ТекущийЭлемент();
на не коректного елемента-родича

Сообщение отредактировал mister-x - 20.03.12, 17:57

alex040269 Подменю пользователя
сообщение 20.03.12, 19:02
Сообщение #2

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

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


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Magdych Подменю пользователя
сообщение 20.03.12, 21:57
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 14 раз
Рейтинг: 0

А почему по коду справочника не синхронизировать? В чем сложность заключается? Если кодировка нужна родная, добавьте реквизит "КодИсточника".

З.Ы. Как по мне то синхронизация по наименованию - это моветон и уж если и использовать, то только в крайнем случае.

mister-x Подменю пользователя
сообщение 20.03.12, 22:04
Сообщение #4

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(alex040269 @ 20.03.12, 19:02) *
В общем из кода мало, что понятно. Но нужно следить за тем, что бы родитель и элемент были из одной базы или там или тут. и все будет гуд.

пробував ще так
спрНомГр1 = создатьОбъект("Справочник.Номенклатура");
спрНомГр2 = создатьОбъект("Справочник.Номенклатура");
спрНомЭл = создатьОбъект("Справочник.Номенклатура");
v7 = СоздатьОбъект("V77.Application");  
init = v7.Initialize(v7.RMTrade, , "");
    СпрТам = v7.EvalExpr("СоздатьОбъект(""Справочник.ТМЦ"")");
    СпрТам.ВыбратьЭлементы(0);    
    СпрТам.ИспользоватьДату(ТекущаяДата(),1);
    //НачатьТранзакцию();
    Пока (СпрТам.ПолучитьЭлемент() = 1) Цикл
                 если СпрТам.пометкаУдаления()=1 тогда
                продолжить;
            конецесли;
            
            наим = сокрлп(СпрТам.Наименование);
            род = сокрлп(спрТам.Родитель.Наименование);
            если СпрТам.ЭтоГруппа()=1 тогда
                если спрНомГр1.НайтиПоНаименованию(наим,0,1)=0 тогда
                    спрНомГр1.НоваяГруппа();
                    спрНомГр1.Наименование=СпрТам.наименование;                
                    //спрНомГр1.Записать();
                    
                    если ПустоеЗначение(род)=0 тогда
                        если спрНомГр2.НайтиПоНаименованию(род,0,1)=0 тогда
                            спрНомГр2.НоваяГруппа();
                            спрНомГр2.Наименование = СпрТам.наименование;                
                            спрНомГр2.Записать();
                            спрНомГр1.Родитель = спрНомГр2.ТекущийЭлемент();
                        иначе
                            спрНомГр1.Родитель = спрНомГр2.ТекущийЭлемент();    
                        конецесли;    
                    конецесли;
                    спрНомГр1.Записать();
                конецесли;
            иначе
                если спрНомЭл.НайтиПоНаименованию(наим,0,1)=0 тогда
                    спрНомЭл.Новый();
                    спрНомЭл.Наименование = наим;                
                    спрНомЭл.ПолнНаименование= сокрлп(спрТам.ПолнНаименование);
                    спрНомЭл.СтавкаНДС = глЗначениеПоУмолчанию("ОсновнаяСтавкаНДС");
                    //Цена0 = СпрТам.Цена_Закуп;
                    //Цена1 = число(ВходExcel.ActiveSheet.Cells(СчетчикЦикла,8).Value);
                    //Цена2 = число(ВходExcel.ActiveSheet.Cells(СчетчикЦикла,9).Value);
                    если ПустоеЗначение(род)=0 тогда
                        если спрНомГр1.НайтиПоНаименованию(род,0,1)=0 тогда //если спрНомГр1.НайтиПоНаименованию(род,0,1)=0 тогда
                            спрНомГр1.НоваяГруппа();
                            спрНомГр1.Наименование = род;                
                            спрНомГр1.Записать();
                            спрНомЭл.Родитель = спрНомГр1.ТекущийЭлемент();
                        иначе
                            сообщить("елемент = "+спрНомЭл.наименование);
                            сообщить("група = "+спрНомГр1.ТекущийЭлемент());
                            спрНомЭл.Родитель = спрНомГр1.ТекущийЭлемент();
                            
                        конецесли;
                    конецесли;
....

Завантажував при відкритому довіднику Номенклатура у торгівлі; так групи, що знаходились на другому рівні в оле-базі бух., спочатку так і завантажились на другому рівні, але після перевідкриття довідника - стали на першому рівні. І коли доходить до завантаження до елемента, що знаходиться на третьому рівні в оле-базі бух., виникає помилка у стрічці
сообщить("елемент = "+спрНомЭл.наименование);
сообщить("група = "+спрНомГр1.ТекущийЭлемент());
спрНомЭл.Родитель = спрНомГр1.ТекущийЭлемент();

тобто групу знаходить, але присвоїти в якості родича не дає:
Цитата
не верное значение реквизита
коли діло доходить до завантаження елементів 3-го рівня.

Сообщение отредактировал mister-x - 20.03.12, 22:05

Magdych Подменю пользователя
сообщение 20.03.12, 22:16
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(mister-x @ 20.03.12, 22:04) *
сообщить("елемент = "+спрНомЭл.наименование);
сообщить("група = "+спрНомГр1.ТекущийЭлемент());

тобто групу знаходить, але присвоїти в якості родича не дає:
Цитата
не верное значение реквизитаколи діло доходить до завантаження елементів 3-го рівня.


Вставьте вот такую строку
Сообщить(спрНомГр1.ЭтоГруппа())

перед
спрНомЭл.Родитель = спрНомГр1.ТекущийЭлемент();



А так же для пущей информативности
спрНомЭлем.ПолныйКод();

Спасибо сказали: mister-x,

mister-x Подменю пользователя
сообщение 20.03.12, 22:21
Сообщение #6

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Сообщить(спрНомГр1.ЭтоГруппа())
це досліджу
ПолныйКод() ще є ПолноеНаименование(), ось і я думаю, можливо воно хоче повний шлях до групи-родича?

Magdych Подменю пользователя
сообщение 20.03.12, 22:24
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 14 раз
Рейтинг: 0

Прошу прощения вот этот полный код
спрНомГр1.ПолныйКод()



Наименование в принципе не может быть ключом. Я бы все же использовал хотя бы просто "Код", а для пущей уверенности ПолныйКод()(если кодировка в пределах подчинения).

Спасибо сказали: mister-x,

mister-x Подменю пользователя
сообщение 20.03.12, 22:26
Сообщение #8

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(Magdych @ 20.03.12, 22:24) *
Наименование в принципе не может быть ключом. Я бы все же использовал хотя бы просто "Код", а для пущей уверенности ПолныйКод()(если кодировка в пределах подчинения).

код також не гарантія - вже є елементи в торг., а також вводяться вручну

Magdych Подменю пользователя
сообщение 20.03.12, 22:29
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 14 раз
Рейтинг: 0

Оно хочет корректного родителя, что в 7.7 есть ссылка на "группу".

Цитата(mister-x @ 20.03.12, 22:26) *
код також не гарантія - вже є елементи в торг., а також вводяться вручну


Я Вам Выше предложил создать реквизит "КодСинхронизации" и в него писать кода базы источника. И у Вас перестанет болеть голова на счет синхронизации.

Пользователь - зверек хитрый и ловкий. ему ни какого труда не составит завести пару-тройку одинаковых наименований.

Спасибо сказали: mister-x,

mister-x Подменю пользователя
сообщение 20.03.12, 22:30
Сообщение #10

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

так от в групи, також є родич-група, але чомусь воно всі групи 2-го рівня переписує на перший рівень після перезакриття довідника, скину скріни для унаочнення завтра
Цитата(Magdych @ 20.03.12, 22:29) *
Я Вам Выше предложил создать реквизит "КодСинхронизации" и в него писать кода базы источника. И у Вас перестанет болеть голова на счет синхронизации.

+1

Сообщение отредактировал mister-x - 20.03.12, 22:32

XBrut Подменю пользователя
сообщение 20.03.12, 22:48
Сообщение #11

Статус
**********
Группа: Пользователи
Сообщений: 1543
Спасибо сказали: 254 раз
Рейтинг: 0

Рефлекторна реакція на Ваш код:
1) я б не використовував вираз
спрНомГр1.Родитель = спрНомГр2.ТекущийЭлемент()

замість того :
СпрНомГр1.ИспользоватьРодителя(ВибРодич);

2) я б спробував робити це не в один проход, а декілька рівень за рівнем
3) і пошук за найменуванням дісно... ненадійний. хто зна що там попадеться.
можна перевіряти що знайдений елемент це дісно елемент, і що група - дісно група. А можливо їх буде декілька з одною назвою..

Сообщение отредактировал XBrut - 20.03.12, 22:55

Спасибо сказали: mister-x,

mister-x Подменю пользователя
сообщение 21.03.12, 12:45
Сообщение #12

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(XBrut @ 20.03.12, 22:48) *
1) я б не використовував вираз
спрНомГр1.Родитель = спрНомГр2.ТекущийЭлемент()

чому - із синтакс-помічника:
Цитата
Родитель
Синтаксис:
Родитель
Назначение:
Доступ к значению родительской группы выбранного элемента справочника.
Атрибут может быть изменен только для объектов, созданных функцией СоздатьОбъект.
не коректно спрацьовує?

Цитата(mister-x @ 21.03.12, 11:46) *
не коректно спрацьовує?

переконався - що так і є, наразі викор. конструкцію ИспользоватьРодителя - завантажує все, але ієрархія збивається

Сообщение отредактировал mister-x - 21.03.12, 12:46

mister-x Подменю пользователя
сообщение 21.03.12, 13:52
Сообщение #13

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

все-таки викор. конструкцію
спр.Родитель =
, а ИспользоватьРодителя потрібно викор. тільки перед методом Новый()
наразі все коректно переносить - ось код (по всьому оле-довіднику унікальні назви елементів)
код
//*******************************************
Процедура Загрузить()
    
    спрЦен=СоздатьОбъект("Справочник.Цены");
    
    спрНомЭл=СоздатьОбъект("Справочник.Номенклатура");
    спрНомГр1=СоздатьОбъект("Справочник.Номенклатура");
    спрНомГр2=СоздатьОбъект("Справочник.Номенклатура");
    
    спрЕд=СоздатьОбъект("Справочник.Единицы");  
    спрОКЕИ=СоздатьОбъект("Справочник.ОКЕИ");
    
    СпрТЦ=СоздатьОбъект("Справочник.ТипыЦен");
    
    
    
    спрЦен.ИспользоватьДату(ТекущаяДата());
    
    СчетчикЦикла = 0;          
              
    
    
    v7 = СоздатьОбъект("V77.Application");
    init = v7.Initialize(v7.RMTrade, , "");
    СпрТам = v7.EvalExpr("СоздатьОбъект(""Справочник.ТМЦ"")");
    СпрТам.ВыбратьЭлементы(0);
    //СпрТам.ВключатьПодчиненные(1);
    СпрТам.ИспользоватьДату(ТекущаяДата(),1); //Авторучка з грипом 505
    Пока СпрТам.ПолучитьЭлемент() = 1 Цикл
        
        если СпрТам.пометкаУдаления()=1 тогда
                продолжить;
            конецесли;
            
            наим = сокрлп(СпрТам.Наименование);
            род = сокрлп(спрТам.Родитель.Наименование);
            если СпрТам.ЭтоГруппа()=1 тогда
                если спрНомГр1.НайтиПоНаименованию(наим,0,1)=0 тогда
                    спрНомГр1.НоваяГруппа();
                    спрНомГр1.Наименование=СпрТам.наименование;                
                    спрНомГр1.Записать();
                    
                    если ПустоеЗначение(род)=0 тогда
                        если спрНомГр2.НайтиПоНаименованию(род,0,1)=0 тогда
                            спрНомГр2.НоваяГруппа();
                            спрНомГр2.Наименование = род;//СпрТам.наименование;                
                            спрНомГр2.Записать();
                            спрНомГр1.Родитель = спрНомГр2.ТекущийЭлемент();
                            //найдГруппа = спрНомГр2.ТекущийЭлемент();
                            //спрНомГр1.ИспользоватьРодителя(найдГруппа);
                            спрНомГр1.Записать();
                        иначе
                            если спрНомГр2.этоГруппа()=1 тогда
                                спрНомГр1.Родитель = спрНомГр2.ТекущийЭлемент();
                                //найдГруппа = спрНомГр2.ТекущийЭлемент();
                                //спрНомГр1.ИспользоватьРодителя(найдГруппа);
                                спрНомГр1.Записать();
                            иначе
                                сообщить("Найдено одинаковое наименование: "+спрНомГр2.наименование+" у группы и элемента!");
                            конецесли;
                        конецесли;    
                    конецесли;
                    //спрНомГр1.Записать();
                иначе
                    если спрНомГр1.Родитель.Наименование <> род тогда
                        если спрНомГр2.НайтиПоНаименованию(род,0,1)=0 тогда
                            спрНомГр2.НоваяГруппа();
                            спрНомГр2.Наименование = род; //СпрТам.наименование;                
                            спрНомГр2.Записать();
                            спрНомГр1.Родитель = спрНомГр2.ТекущийЭлемент();
                            //найдГруппа = спрНомГр2.ТекущийЭлемент();
                            //спрНомГр1.ИспользоватьРодителя(найдГруппа);
                            спрНомГр1.Записать();
                        иначе
                            если спрНомГр2.этоГруппа()=1 тогда
                                спрНомГр1.Родитель = спрНомГр2.ТекущийЭлемент();
                                //найдГруппа = спрНомГр2.ТекущийЭлемент();
                                //спрНомГр1.ИспользоватьРодителя(найдГруппа);
                                спрНомГр1.Записать();
                            иначе
                                сообщить("Найдено одинаковое наименование: "+спрНомГр2.наименование+" у группы и элемента!");
                            конецесли;
                        конецесли;             
                    конецесли;    
                конецесли;
            иначе
                если спрНомЭл.НайтиПоНаименованию(наим,0,1)=0 тогда
                    спрНомЭл.Новый();
                    спрНомЭл.Наименование = наим;                
                    спрНомЭл.ПолнНаименование= сокрлп(спрТам.ПолнНаименование);
                    спрНомЭл.СтавкаНДС = глЗначениеПоУмолчанию("ОсновнаяСтавкаНДС");
                    
                    если ПустоеЗначение(род)=0 тогда
                        если спрНомГр1.НайтиПоНаименованию(род,0,1)=0 тогда //если спрНомГр1.НайтиПоНаименованию(род,0,1)=0 тогда
                            спрНомГр1.НоваяГруппа();
                            спрНомГр1.Наименование = род;                
                            спрНомГр1.Записать();
                            спрНомЭл.Родитель = спрНомГр1.ТекущийЭлемент();
                            //найдГруппа = спрНомГр1.ТекущийЭлемент();
                            //спрНомЭл.ИспользоватьРодителя(найдГруппа);
                            спрНомЭл.Записать();
                        иначе
                            //сообщить("элемент = "+спрНомЭл.наименование);
                            //сообщить("группа = "+спрНомГр1.ТекущийЭлемент());
                            
                            если спрНомГр1.этоГруппа()=1 тогда
                                спрНомЭл.Родитель = спрНомГр1.ТекущийЭлемент();
                                //найдГруппа = спрНомГр1.ТекущийЭлемент();
                                //спрНомЭл.ИспользоватьРодителя(найдГруппа);
                                спрНомЭл.Записать();
                            иначе
                                сообщить("Найдено одинаковое наименование: "+спрНомГр1.наименование+" у группы и элемента!");
                            конецесли;
                        конецесли;
                    конецесли;
                    
                    //если спрТам.ВидТМЦ.Идентификатор() = v7.перечисление.ВидыТМЦ.Товар.Идентификатор() тогда //v7.evalexpr("перечисление.ВидыТМЦ.Товар") тогда //; "ТОВАР" тогда
                    //    спрНомЭл.ВидНоменклатуры = перечисление.ВидыТМЦ.Товар;
                    //
                    //иначеесли спрТам.ВидТМЦ.Идентификатор() = v7.перечисление.ВидыТМЦ.Продукция.Идентификатор() тогда //v7.evalexpr("перечисление.ВидыТМЦ.Продукция") тогда
                    //    спрНомЭл.ВидНоменклатуры = перечисление.ВидыТМЦ.Продукция;
                    //
                    //иначеесли спрТам.ВидТМЦ.Идентификатор() = v7.перечисление.ВидыТМЦ.Материал.Идентификатор() тогда //v7.evalexpr("перечисление.ВидыТМЦ.Материал") тогда
                    //    спрНомЭл.ВидНоменклатуры = перечисление.ВидыТМЦ.Материал;
                    //
                    //иначе
                    //    спрНомЭл.ВидНоменклатуры = перечисление.ВидыТМЦ.Товар;
                    //конецесли;
                    
                    значПереч = спрТам.ВидТМЦ.Идентификатор();
                    попытка
                        спрНомЭл.ВидНоменклатуры = перечисление.ВидыТМЦ.ЗначениеПоИдентификатору(значПереч);
                    исключение
                        спрНомЭл.ВидНоменклатуры = перечисление.ВидыТМЦ.Товар;
                    конецпопытки;    
                        
                    спрНомЭл.Записать();
                    
                    //--------------------------------------------------------------------------------
                    СпрЕд.ИспользоватьВладельца(спрНомЭл);
                    СпрЕд.Новый();
                    //Если спрТам.БазЕдиница.Идентификатор() = v7.перечисление.Единицы.кг.Идентификатор() тогда //v7.evalexpr("перечисление.Единицы.кг") тогда
                    //КонецЕсли;
                    океи = сокрлп(спрТам.БазЕдиница.Идентификатор());
                    если спрОКЕИ.НайтиПоНаименованию(океи,0,1)=0 тогда
                        спрОКЕИ.новый();
                        к = 0;
                        ок = 0;
                        пока ок = 0 цикл
                            попытка
                                //дл = стрДлина(строка(к));
                                _код = строка(формат(к,"Ч(0)3"));
                                спрОКЕИ.код = _код;
                                спрОКЕИ.наименование = океи;
                                спрОКЕИ.записать();
                                ок = 1;
                            исключение
                                к = к+1;        
                            конецпопытки;
                        конеццикла;    
                        //спрОКЕИ.код = океи;
                        //спрОКЕИ.наименование = океи;
                        //спрОКЕИ.записать();
                        СпрЕд.ОКЕИ = спрОКЕИ.текущийЭлемент();
                    иначе
                        СпрЕд.ОКЕИ = спрОКЕИ.текущийЭлемент();    
                    конецесли;    
                    СпрЕд.Коэффициент=1;
                    //СпрЕд.Вес=;
                    СпрЕд.Записать();  
                    спрНомЭл.БазоваяЕдиница=СпрЕд.ТекущийЭлемент();
                    спрНомЭл.ОсноВнаяЕдиница=СпрЕд.ТекущийЭлемент();
                    спрНомЭл.Записать();
                    
                    //--------------------------------------------------------------------------------
                    если спрТам.Цена_Прих<>0 тогда
                        спрЦен.ИспользоватьВладельца(спрНомЭл.ТекущийЭлемент());
                        спрЦен.Новый();
                        СпрЦен.Цена=спрТам.Цена_Прих;
                        
                        //------
                        СпрТЦ.новый();
                        СпрТЦ.Наименование = "Закупочная";
                        СпрТЦ.Записать();    
                        
                        СпрЦен.ТипЦен=СпрТЦ.текущийЭлемент();
                        СпрЦен.Валюта=Константа.ВалютаБухУчета;
                        СпрЦен.Единица=спрНомЭл.БазоваяЕдиница;
                        СпрЦен.Записать();
                    конецесли;
                    
                    //--------------------------------------------------------------------------------
                    если спрТам.Цена_Прод<>0 тогда
                        спрЦен.ИспользоватьВладельца(спрНомЭл.ТекущийЭлемент());
                        спрЦен.Новый();
                        СпрЦен.Цена=спрТам.Цена_Прод;
                        
                        //-------
                        СпрТЦ.новый();
                        СпрТЦ.Наименование = "Отпускная";
                        СпрТЦ.Записать();
                        
                        СпрЦен.ТипЦен=СпрТЦ.текущийЭлемент();
                        СпрЦен.Валюта=Константа.ВалютаБухУчета;
                        СпрЦен.Единица=спрНомЭл.БазоваяЕдиница;
                        СпрЦен.Записать();
                    конецесли;
                    
                    //--------------------------------------------------------------------------------
                    если спрТам.Цена_Розн<>0 тогда
                        спрЦен.ИспользоватьВладельца(спрНомЭл.ТекущийЭлемент());
                        спрЦен.Новый();
                        СпрЦен.Цена=спрТам.Цена_Розн;
                        
                        //-------
                        СпрТЦ.новый();
                        СпрТЦ.Наименование = "Розничная";
                        СпрТЦ.Записать();
                        
                        СпрЦен.ТипЦен=СпрТЦ.текущийЭлемент();
                        СпрЦен.Валюта=Константа.ВалютаБухУчета;
                        СпрЦен.Единица=спрНомЭл.БазоваяЕдиница;
                        СпрЦен.Записать();                
                    КонецЕсли;
                КонецЕсли;
        КонецЕсли;
        СчетчикЦикла = СчетчикЦикла +1;
        состояние(счетчикцикла);
    КонецЦикла;
    
    
КонецПроцедуры


Сообщение отредактировал mister-x - 21.03.12, 13:56

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

5_kopeek Подменю пользователя
сообщение 22.03.12, 4:11
Сообщение #14

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Офф
В даному контексті Родитель варто перекладати як Батьківський елемент. Слово Родич має зовсім інше змістове навантаження.

Спасибо сказали: mister-x,

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


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

 

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