Имя: Пароль:
1C
1C 7.7
v7: переброс по оле приказов о приеме на работу ЗиК 2.3
0 Вежливый_Лось
 
26.10.11
16:53
при переброске с одной базы в другую кроме Оклада все садится нормально
может знает кто в чем проблема?
1 DJ Anthon
 
26.10.11
16:56
хи ))) я знаю
2 DJ Anthon
 
26.10.11
16:57
реквизит неопределенный, тип надо назначать
3 DJ Anthon
 
26.10.11
16:57
обработка у меня готова, хошь посмотреть?
4 Вежливый_Лось
 
26.10.11
17:00
Давай я думал ты забыл уже)))))
5 DJ Anthon
 
26.10.11
17:01
http://zalil.ru/31938379

это пре-релиз, я добиваю туда перенос проводок, скоро будет готово.

вот этот код надо вставить в глобальник


//Anthon -<
Перем ОЛЕТаблицаПериодика Экспорт;
Перем ОЛЕТаблицаПроводки Экспорт;
Перем ОЛЕТаблицаРегистры Экспорт;
Перем ОЛЕТаблицаЗаписи Экспорт;
Перем ОЛЕПеренос Экспорт;

//пригодится для отладки
//просто заглушка
Функция глОбработкаОтменыПроведения(Конт) Экспорт
   Возврат 1;
КонецФункции

//в оле нету периода регистрации. приходится обходить
Функция ПолучитьПериодыРегистрации(Вид = "", ДатаДок = "", НомерДок = "", Имя = "") Экспорт
   СписокДат = СоздатьОбъект("СписокЗначений");
   Док = СоздатьОбъект("Документ." + Вид);
   Если Док.НайтиПоНомеру(НомерДок, ДатаДок) = 1 Тогда
       ЖР = СоздатьОбъект("ЖурналРасчетов." + Имя);
       ЖР.ВыбратьЗаписиПоДокументу(Док.ТекущийДокумент());
       Пока ЖР.ПолучитьЗапись() = 1 Цикл
           СписокДат.ДобавитьЗначение(ЖР.ПериодРегистрации.ДатаНачала);
       КонецЦикла;
   КонецЕсли;
   Возврат ЗначениеВСтроку(СписокДат);
КонецФункции

Функция ПолучитьТаблицуЗаписи(Записи = "", ШаблонЗаписи, ЖР)
   Если Записи = "" Тогда
       Записи = СоздатьОбъект("ТаблицаЗначений");
       ШаблонЗаписи.Выгрузить(Записи);
   КонецЕсли;
   
   Записи.НоваяСтрока();
   Записи.Журнал = ЖР.Вид();
   Записи.Ссылка = ЖР.ТекущийДокумент();
   Записи.ПериодРегистрации = ЖР.ПериодРегистрации;
   Записи.ВидРасч = ВидРасчета.ПолучитьАтрибут(ЖР.ВидРасч.Код);
   Записи.Сторно = ЖР.Сторно;
   Записи.Рассчитана = ЖР.Рассчитана;
   Записи.Исправлена = ЖР.Исправлена;
   Записи.Фиксирована = ЖР.Фиксирована;
   Записи.Перерасчет = ЖР.Перерасчет;
   Записи.ПервичнаяЗапись = ПолучитьТаблицуЗаписи(, ШаблонЗаписи, ЖР.ПервичнаяЗапись);
   Записи.Результат = ЖР.Результат;
   Записи.ДатаНачала = ЖР.ДатаНачала;
   Записи.ДатаОкончания = ЖР.ДатаОкончания;

   Атрибуты = СоздатьОбъект("СписокЗначений");
   Для СчАтр = -2 По Метаданные.ЖурналРасчетов(Записи.Журнал).Реквизит() Цикл
       Если СчАтр = -2 Тогда
           Атрибуты.ДобавитьЗначение(ЖР.Документ.ТекущийДокумент(), "Документ");
       ИначеЕсли СчАтр = -1 Тогда
           Атрибуты.ДобавитьЗначение(ЖР.РодительскийДокумент.ТекущийДокумент(), "РодительскийДокумент");
       ИначеЕсли СчАтр = 0 Тогда
           Атрибуты.ДобавитьЗначение(ЖР.Объект.ТекущийЭлемент(), "Объект");
         Иначе
           Атрибуты.ДобавитьЗначение(ЖР.ПолучитьАтрибут(Метаданные.ЖурналРасчетов(Записи.Журнал).Реквизит(СчАтр)),
               Метаданные.ЖурналРасчетов(Записи.Журнал).Реквизит(СчАтр).Идентификатор);
       КонецЕсли;
   КонецЦикла;
   Записи.Атрибуты = Атрибуты;
   Возврат Записи;
КонецФункции

Функция ВвестиЗаписьПоТаблице(ОЛЕТаблицаЗаписи, ЖР)
   ЖР.УстановитьТекущийПериод(ОЛЕТаблицаЗаписи.ПериодРегистрации, 0);
   ЖР.Новая();
   ЖР.УстановитьРеквизит("ВидРасч",                ОЛЕТаблицаЗаписи.ВидРасч);
   ЖР.УстановитьРеквизит("ДатаНачала",                ОЛЕТаблицаЗаписи.ДатаНачала);
   ЖР.УстановитьРеквизит("ДатаОкончания",            ОЛЕТаблицаЗаписи.ДатаОкончания);
   ЖР.УстановитьРеквизит("Сторно",                    ОЛЕТаблицаЗаписи.Сторно);
   ЖР.УстановитьРеквизит("Рассчитана",                ОЛЕТаблицаЗаписи.Рассчитана);
   ЖР.УстановитьРеквизит("Исправлена",                ОЛЕТаблицаЗаписи.Исправлена);
   ЖР.УстановитьРеквизит("Перерасчет",                ОЛЕТаблицаЗаписи.Перерасчет);
   ЖР.УстановитьРеквизит("Результат",                ОЛЕТаблицаЗаписи.Результат);
   ЖР.УстановитьРеквизит("Фиксирована",            ОЛЕТаблицаЗаписи.Фиксирована);
   //ЖР.УстановитьРеквизит("ПервичнаяЗапись",        ОЛЕТаблицаЗаписи.ПервичнаяЗапись);///////
   Для СчАт = 1 По ОЛЕТаблицаЗаписи.Атрибуты.РазмерСписка() Цикл
       Идентификатор = "";
       Значение = ОЛЕТаблицаЗаписи.Атрибуты.ПолучитьЗначение(СчАт, Идентификатор);
       ЖР.УстановитьРеквизит("РодительскийДокумент", ЖР.Документ);//////
       ЖР.УстановитьРеквизит(Идентификатор, Значение);
   КонецЦикла;
   ЖР.Записать();
КонецФункции

//переопределить во всех модулях проведения - сделать замену на
//Процедура ОбработкаПроведения(ОбработчикСообщений) Если глОбработкаПроведения(Контекст, ОбработчикСообщений) = 1 Тогда Возврат; Иначе КонецЕсли;
Функция глОбработкаПроведения(Конт = 0, ВидыДвижений = 0) Экспорт
   Если ОЛЕПеренос = 1 Тогда
       Если ТипЗначенияСтр(ОЛЕТаблицаПериодика) <> "ТаблицаЗначений" Тогда
           ОЛЕТаблицаПериодика = СоздатьОбъект("ТаблицаЗначений");
           Периодический = СоздатьОбъект("Периодический");
           //Периодический.ИспользоватьОбъект();
           Если Периодический.ВыбратьПоДокументу(Конт.ТекущийДокумент()) = 1 Тогда
               Периодика = СоздатьОбъект("ТаблицаЗначений");
               Периодика.НоваяКолонка("Объект");
               Периодика.НоваяКолонка("Реквизит");
               Периодика.НоваяКолонка("Значение");
               Периодика.НоваяКолонка("Дата");
               Периодика.НоваяКолонка("НомерСтроки");
               Пока Периодический.ПолучитьЗначение() = 1 Цикл
                   Периодика.Объект = Периодический.ТекущийОбъект();
                   Периодика.Реквизит = Периодический.ТекущийРеквизит();
                   Периодика.Дата = Периодический.ДатаЗнач;
                   Идентификатор = Периодический.ТекущийРеквизит();
                   ЗВид = Лев(Идентификатор, Найти(Идентификатор, ".") - 1);
                   Реквизит = Метаданные.Справочник(ЗВид).Реквизит(Сред(Идентификатор, Найти(Идентификатор, ".") + 1));
                   РТип = Реквизит.Тип;
                   АтрибутЗдесь = Периодический.Значение;
                   Периодика.Значение = АтрибутЗдесь;
               КонецЦикла;
               Периодика.Выгрузить(ОЛЕТаблицаЗаписи);
           КонецЕсли;
       КонецЕсли;
       Конт.ОчиститьДвижения("Справочник");
       ОЛЕТаблицаПериодика.ВыбратьСтроки();
       Пока ОЛЕТаблицаПериодика.ПолучитьСтроку() = 1 Цикл
           Конт.УстановитьРеквизитСправочника(ОЛЕТаблицаПериодика.Объект.ТекущийЭлемент(),
               Сред(ОЛЕТаблицаПериодика.Реквизит, Найти(ОЛЕТаблицаПериодика.Реквизит, ".") + 1),
                   ОЛЕТаблицаПериодика.Значение, ОЛЕТаблицаПериодика.Дата);//////неопред
       КонецЦикла;


       
       Если ТипЗначенияСтр(ОЛЕТаблицаПроводки) <> "ТаблицаЗначений" Тогда
           ОЛЕТаблицаПроводки = СоздатьОбъект("ТаблицаЗначений");
           Операция = СоздатьОбъект("Операция");
           Если Операция.НайтиОперацию(Конт.ТекущийДокумент()) = 1 Тогда
               Проводки = СоздатьОбъект("ТаблицаЗначений");
               Проводки.НоваяКолонка("Объект");
               Проводки.НоваяКолонка("Реквизит");
               Проводки.НоваяКолонка("Значение");
               Проводки.НоваяКолонка("Дата");
               Проводки.НоваяКолонка("НомерСтроки");
               Операция.ВыбратьПроводки();
               Пока Операция.ПолучитьПроводку() = 1 Цикл
                   
               КонецЦикла;
               //Пока Периодический.ПолучитьЗначение() = 1 Цикл
               //    Периодика.Объект = Периодический.ТекущийОбъект();
               //    Периодика.Реквизит = Периодический.ТекущийРеквизит();
               //    Периодика.Дата = Периодический.ДатаЗнач;
               //    Идентификатор = Периодический.ТекущийРеквизит();
               //    ЗВид = Лев(Идентификатор, Найти(Идентификатор, ".") - 1);
               //    Реквизит = Метаданные.Справочник(ЗВид).Реквизит(Сред(Идентификатор, Найти(Идентификатор, ".") + 1));
               //    РТип = Реквизит.Тип;
               //    АтрибутЗдесь = Периодический.Значение;
               //    Периодика.Значение = АтрибутЗдесь;
               //КонецЦикла;СложнаяПроводка()
               Проводки.Выгрузить(ОЛЕТаблицаПроводки);
           КонецЕсли;
       КонецЕсли;
       Конт.ОчиститьДвижения("Операция");
       ОЛЕТаблицаПроводки.ВыбратьСтроки();
       Пока ОЛЕТаблицаПроводки.ПолучитьСтроку() = 1 Цикл

       КонецЦикла;
       
       

       Если ТипЗначенияСтр(ОЛЕТаблицаЗаписи) <> "ТаблицаЗначений" Тогда
           ОЛЕТаблицаЗаписи = СоздатьОбъект("ТаблицаЗначений");
           Записи = СоздатьОбъект("ТаблицаЗначений");
           ШаблонЗаписи = СоздатьОбъект("ТаблицаЗначений");
           Записи.НоваяКолонка("Журнал");
           Записи.НоваяКолонка("Ссылка");
           Записи.НоваяКолонка("ПериодРегистрации");
           Записи.НоваяКолонка("ОписательПериода");
           Записи.НоваяКолонка("ВидРасч");
           Записи.НоваяКолонка("Сторно");
           Записи.НоваяКолонка("Рассчитана");
           Записи.НоваяКолонка("Исправлена");
           Записи.НоваяКолонка("Фиксирована");
           Записи.НоваяКолонка("Перерасчет");
           Записи.НоваяКолонка("ПервичнаяЗапись");
           Записи.НоваяКолонка("Результат");
           Записи.НоваяКолонка("ДатаНачала");
           Записи.НоваяКолонка("ДатаОкончания");
           Записи.НоваяКолонка("Атрибуты");
           Записи.Выгрузить(ШаблонЗаписи);
           Для СчЖР = 1 По Метаданные.ЖурналРасчетов() Цикл
               ИмяЖурнала = Метаданные.ЖурналРасчетов(СчЖР).Идентификатор;
               ЖР = СоздатьОбъект(Метаданные.ЖурналРасчетов(СчЖР).ПолныйИдентификатор());
               Если ЖР.ВыбратьЗаписиПоДокументу(Конт.ТекущийДокумент()) = 1 Тогда
                   Счетчик = 0;
                   Пока ЖР.ПолучитьЗапись() = 1 Цикл
                       Счетчик = Счетчик + 1;
                       ПолучитьТаблицуЗаписи(Записи, ШаблонЗаписи, ЖР.ТекущаяЗапись());
                   КонецЦикла;
               КонецЕсли;
           КонецЦикла;
           Записи.Выгрузить(ОЛЕТаблицаЗаписи);
       КонецЕсли;
       Конт.ОчиститьДвижения("ЖурналРасчетов");
       ОЛЕТаблицаЗаписи.ВыбратьСтроки();
       Пока ОЛЕТаблицаЗаписи.ПолучитьСтроку() = 1 Цикл
           ЖР = СоздатьОбъект("ЖурналРасчетов." + ОЛЕТаблицаЗаписи.Журнал);
           ПР = ЖР.ТекущийПериод();
           ВвестиЗаписьПоТаблице(ОЛЕТаблицаЗаписи, ЖР);
           ЖР.УстановитьТекущийПериод(ПР, 0);
       КонецЦикла;


       
       
       
       Если ТипЗначенияСтр(ОЛЕТаблицаРегистры) <> "ТаблицаЗначений" Тогда
           ОЛЕТаблицаРегистры = СоздатьОбъект("ТаблицаЗначений");
           Регистры = СоздатьОбъект("ТаблицаЗначений");
           Регистры.НоваяКолонка("Регистр");
           Регистры.НоваяКолонка("Ссылка");
           Регистры.НоваяКолонка("Приход");
           Регистры.НоваяКолонка("Расход");
           Регистры.НоваяКолонка("Движение");
           Для СчРег = 1 По Метаданные.Регистр() Цикл
               ИмяРегистра = Метаданные.Регистр(СчРег).Идентификатор;
               Рег = СоздатьОбъект("Регистр." + ИмяРегистра);
               Если Рег.ВыбратьДвиженияДокумента(Конт.ТекущийДокумент()) = 1 Тогда
                   Счетчик = 0;
                   Пока Рег.ПолучитьДвижение() = 1 Цикл
                       Счетчик = Счетчик + 1;
                       Регистры.НоваяСтрока();
                       Регистры.Регистр = ИмяРегистра;
                       Регистры.Ссылка = Конт.ТекущийДокумент();
                       Регистры.Приход = Рег.Приход;
                       Регистры.Расход = Рег.Расход;
                       Движение = СоздатьОбъект("СписокЗначений");
                       Всего = Метаданные.Регистр(ИмяРегистра).Реквизит() + Метаданные.Регистр(ИмяРегистра).Ресурс() + Метаданные.Регистр(ИмяРегистра).Измерение();
                       Для СчАтр = 1 По Всего Цикл
                           Если СчАтр <= Метаданные.Регистр(ИмяРегистра).Измерение() Тогда
                                 Реквизит = Метаданные.Регистр(ИмяРегистра).Измерение(СчАтр);
                           ИначеЕсли СчАтр <= Метаданные.Регистр(ИмяРегистра).Измерение() + Метаданные.Регистр(ИмяРегистра).Реквизит() Тогда
                                 Реквизит = Метаданные.Регистр(ИмяРегистра).Реквизит(СчАтр - Метаданные.Регистр(ИмяРегистра).Измерение());
                             Иначе
                                 Реквизит = Метаданные.Регистр(ИмяРегистра).Ресурс(СчАтр - Метаданные.Регистр(ИмяРегистра).Измерение() - Метаданные.Регистр(ИмяРегистра).Реквизит());
                           КонецЕсли;
                           Движение.ДобавитьЗначение(Рег.ПолучитьАтрибут(Реквизит.Идентификатор), Реквизит.Идентификатор);
                       КонецЦикла;
                       Регистры.Движение = Движение;
                   КонецЦикла;
               КонецЕсли;
           КонецЦикла;
           Регистры.Выгрузить(ОЛЕТаблицаРегистры);
       КонецЕсли;
       Для СчРег = 1 По Метаданные.Регистр() Цикл
           Конт.ОчиститьДвижения("Регистр." + Метаданные.Регистр(СчРег).Идентификатор);
       КонецЦикла;
       ОЛЕТаблицаРегистры.ВыбратьСтроки();
       Пока ОЛЕТаблицаРегистры.ПолучитьСтроку() = 1 Цикл
           Рег = Конт.Регистр.ПолучитьАтрибут(ОЛЕТаблицаРегистры.Регистр);  
           Для СчРег = 1 По ОЛЕТаблицаРегистры.Движение.РазмерСписка() Цикл
               Идентификатор = "";
               Значение = ОЛЕТаблицаРегистры.Движение.ПолучитьЗначение(СчРег, Идентификатор);
               Рег.УстановитьАтрибут(Идентификатор, Значение);
           КонецЦикла;
           Если ОЛЕТаблицаРегистры.Приход + ОЛЕТаблицаРегистры.Расход = 2 Тогда
               Сообщить("Ошибка проведения документа " + Конт.ТекущийДокумент() + "!");
           ИначеЕсли ОЛЕТаблицаРегистры.Приход = 1 Тогда
               Рег.ДвижениеПриходВыполнить();
           ИначеЕсли ОЛЕТаблицаРегистры.Расход = 1 Тогда
               Рег.ДвижениеПриходВыполнить();
           ИначеЕсли ОЛЕТаблицаРегистры.Расход + ОЛЕТаблицаРегистры.Приход = 0 Тогда
               Рег.ДвижениеВыполнить();
           КонецЕсли;
       КонецЦикла;
   
       Сообщить("Проведение документа с переопределением движений: " + Конт.ТекущийДокумент());
       Возврат 1;
   КонецЕсли;
   Возврат 0;
КонецФункции
//Anthon ->

6 DJ Anthon
 
26.10.11
17:03
если хочешь идеального переноса, то надо будет еще выполнить все по инструкции:
все строки в конфигурации
Процедура ОбработкаПроведения(ОбработчикСообщений)
заменить на
Процедура ОбработкаПроведения(ОбработчикСообщений) Если глОбработкаПроведения(Контекст, ОбработчикСообщений) = 1 Тогда Возврат; Иначе КонецЕсли;



еще есть пара нюансов... но я их добиваю. в частности, пока не переносятся первичные записи, но это я сегодня сделаю. для твоих доков тебе хватит
7 DJ Anthon
 
26.10.11
17:04
эти изменения безвредные, могут висеть в базе до следующего обновления, можешь их удалить сразу после переноса. я сейчас пишу код для автоматической разборки/сборки мдшника, чтобы и этим тоже не заморачиваться.
8 Вежливый_Лось
 
26.10.11
17:06
завтра опробуем))))) спасибо
9 GreyK
 
26.10.11
17:08
(0) А что и куда несёте?
(5) "//в оле нету периода регистрации. приходится обходить" - это ты про что?
10 DJ Anthon
 
26.10.11
17:11
ОЛЕЖурналРасчета.ПериодРегистрации.ДатаНачала - ошибка
ОЛЕЖурналРасчета.ПериодРегистрации.ОписательПериода - ошибка
11 DJ Anthon
 
26.10.11
17:12
ОЛЕЖурналРасчета.ПериодРегистрации - объект неизвестного типа.

а вот все остальные реквизиты - нормальные.

не подскажешь, в чем может быть дело?
12 DJ Anthon
 
26.10.11
17:14
(9) что и куда? все! ))))) переносит в отличие от других обработок периодику, регистры, константы, не требует одинаковость конфигураций (можно из зика в комплексную, например, только не идеально перенесется), отборы, интерактивный выбор элементов из ОЛЕ, куча опций. даже в конце список объектов можно увидеть и проверить. можно переносить даже отдельные записи ЖР, регистров, проводок и периодики (но это уже в платной версии)
13 GreyK
 
26.10.11
17:22
(11) Я брал дату из документа.
14 DJ Anthon
 
26.10.11
17:26
(13) нифига ты модный... она может и не совпадать, возьми, к примеру, отпуск по уходу за ребенком...
15 DJ Anthon
 
26.10.11
17:30
еще прикол, как создать периодическую запись с пустой датой? платформа такое не позволяет, а у меня есть такие базы... и как создать документ с пустой датой или номером?
16 GreyK
 
26.10.11
17:33
(14) В ЗиКе всё привязано к дате документа не сумлевайся :) Посмотри каким документом введены записи отпуска по уходу.
17 DJ Anthon
 
26.10.11
17:34
(16) сумлеваюсь...
18 DJ Anthon
 
26.10.11
17:34
(16) там еще есть пересчеты
19 GreyK
 
26.10.11
17:38
(15) А ты вначале создай переменную и присвой ее значение пустой даты, полученной по ОЛЕ, потом меняй пустые даты на ПустуюДАтуВнешнегоИсточника и платформа согласитя :)
(18) Какие пересчеты? Ручные записи или записи введенные доком?
20 DJ Anthon
 
26.10.11
17:39
(16) а ввод расчета сотруднику?

Движения документа: Ввод расчета сотруднику №000001 от 26.10.11                                                
                                               
   Записи журналов расчетов                                            
Период расчета            Объект расчета            Вид расчета            Результат        Начало    Окончание
                                           Дни    Часы
Журнал "Журнал зарплата"                                                
Март 2010 г.            01553    Андриянова Надежда Андреевна        Доплата суммой            14.00        01.03.2010    01.03.2010
21 DJ Anthon
 
26.10.11
17:40
(19) по оле пустую дату получить невозможно. по оле пустая дата приходит как 30.12.1899
22 DJ Anthon
 
26.10.11
17:41
(19) записи, введенные платформой от отмены проведения документов
23 GreyK
 
26.10.11
17:43
(21) Вот ты эту дату и присваивай вместо пустого значения.
(22) Ты переносишь документы?
24 DJ Anthon
 
26.10.11
17:43
как видишь, период регистрации с датой документа нифига не совпадает.
25 GreyK
 
26.10.11
17:44
(20) Посмотри каким доком эта запись вводится в следуещем периоде.
26 DJ Anthon
 
26.10.11
17:44
в следующем - понятно. а первая запись?
27 GreyK
 
26.10.11
17:48
Ну и в первом посмотри.
(24) Это про ручные записи?
В Зике куча защит от изменения задним и будущим числом.
28 DJ Anthon
 
26.10.11
17:49
(27) в первом - я тебе написал. запись вводится документом Ввод расчета сотруднику №000001 от 26.10.11
в марте 2010 года. никакой связи.

это не ручные записи, а записи с красной стрелочкой.

и про защиту я в курсе. легко обходится ;)
29 DJ Anthon
 
26.10.11
17:50
ой не ручные. а самые что ни на есть стандартные. записи со стрелочкой - это про (22)
30 DJ Anthon
 
26.10.11
17:51
и самое смешное, что я уже решил проблему с периодом регистрации давно, но не помню как. помню, что очень изящно )) но сейчас не могу придумать как...
31 GreyK
 
26.10.11
18:07
(28) Сторно?
Как обходишь? УстановитьТекущийПериод()?
32 DJ Anthon
 
26.10.11
18:16
так как я перебираю все записи документа, я запоминаю порядковый номер текущей обрабатываемой записи. затем делаю то же самое в ExecuteBatch и по номеру записи беру период уже оттуда. правда, для этого приходится править модуль подключаемой базы (добавить одну функцию). хочу это обойти тоже. может, как-нибудь одним оператором...

(0) автор, забыл тебе сказать, для переноса записей в ОЛЕ-базе надо в глобальник сунуть это:


Функция ПолучитьПериодыРегистрации(Вид = "", ДатаДок = "", НомерДок = "", Имя = "") Экспорт
   СписокДат = СоздатьОбъект("СписокЗначений");
   Док = СоздатьОбъект("Документ." + Вид);
   Если Док.НайтиПоНомеру(НомерДок, ДатаДок) = 1 Тогда
       ЖР = СоздатьОбъект("ЖурналРасчетов." + Имя);
       ЖР.ВыбратьЗаписиПоДокументу(Док.ТекущийДокумент());
       Пока ЖР.ПолучитьЗапись() = 1 Цикл
           СписокДат.ДобавитьЗначение(ЖР.ПериодРегистрации.ДатаНачала);
       КонецЦикла;
   КонецЕсли;
   Возврат ЗначениеВСтроку(СписокДат);
КонецФункции
33 DJ Anthon
 
26.10.11
18:18
и для первичной записи такое не прокатывает. попробую через сравнение записей...
записи ОЛЕ сука кривые - для них ЗначениеВСтрокуВнутр и ЗначениеВСтроку не подходят. это специально по ходу сделано. чтобы мы поебaлись.
34 DJ Anthon
 
26.10.11
18:21
(31) а, ты про защиту.... ну можно так, ага... как еще...
35 GreyK
 
27.10.11
21:12
Жалко глобальник млин.
Это невозможно :)
Функция ПолучитьПериодРегистрации(Запись)
   Перем ЖурналРасчетовВИ;
   ЖурналРасчетовВИ=СоздатьОбъектВИ("ЖурналРасчетов."+Запись.Вид());
   ЖурналРасчетовВИ.УстановитьТекущийПериод(Запись.ПериодРегистрации,0);
   Возврат ЖурналРасчетовВИ.НачалоТекущегоПериода();
КонецФункции //ПолучитьПериодРегистрации
36 DJ Anthon
 
27.10.11
21:14
это ты че щас написал?
37 DJ Anthon
 
27.10.11
21:16
ты как запись по оле передашь? нафига менять что-то в базе оле? (даже такую мелочь как период) а если она только для чтения?
правку глобальника обошел методом внещней обработки, но все равно это не козырный метод.

кстати, первичная запись теперь тоже переносится рекурсивно и нашел еще один баг платформы.
38 DJ Anthon
 
27.10.11
21:18
надоела эта вылизка багов.... завтра доделаю перенос проводок и возьмусь за эргономику интерфейса. подпишу все кнопки и напишу инструкцию. к ноябрю будет релиз. как и планировал.
39 DJ Anthon
 
27.10.11
21:20
(35) если не в оле базе, а в текущей и Запись - олешная, то

ЖурналРасчетовВИ.УстановитьТекущийПериод(Запись.ПериодРегистрации,0); - вылет платформы. потому что объект Запись.ПериодРегистрации - нечитаем. его значение - {Х 0 0 0 0 0}

так что ты зря старался.
40 GreyK
 
27.10.11
21:47
(37) Запоминай и возвращай на место.
(38) Зачем впихивать невпихиваемое :)