8.х Контактная информация

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем rerewe, 23 ноя 2012.

  1. TopicStarter Overlay
    rerewe
    Offline

    rerewe

    Регистрация:
    23 ноя 2012
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Подскажите пожалуйста что за фигня, в рабочей базе на сервере удалилась контактная информация по всем контрагентам. Причины не известны, просто нет и все. Журнал ответов не дал, там ничего особенного не было. Нет не юр., не факт., не почтового адреса, вообще ничего! Где копать?
  2. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Хоть что-то произошло же? Свет там отключили или еще чего?
  3. VIPOS
    Offline

    VIPOS Опытный в 1С

    Регистрация:
    12 сен 2012
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    29
    Архивы баз ведуться???? Если да, то сделайте откат базы...
  4. TopicStarter Overlay
    rerewe
    Offline

    rerewe

    Регистрация:
    23 ноя 2012
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Со светом все было нормально, логи просмотрел, ребута небыло

    Архив есть от 17.11 с контактной информацией. Все архивы позже уже затерты адреса. Восстановить не проблема, могу с помощью переноса данных обработкой, но, где искать причину. Плюс бухгалтера не в восторге..

    Проблема вся в том, что много сформированных документов за неделю, во всех печатные формы, соответственно без адресов контрагентов..
  5. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    и за неделю никто не спохватился, что там пусто??? а какой журнал смотрели?
  6. TopicStarter Overlay
    rerewe
    Offline

    rerewe

    Регистрация:
    23 ноя 2012
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Так говорили, что мол открыли одного контрагента, а у него нет, между словом. А сегодня даже в самом справочнике организации пропали адреса.
  7. VIPOS
    Offline

    VIPOS Опытный в 1С

    Регистрация:
    12 сен 2012
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    29
    А в течении этого времени никаких допов или обработок не выкачивали??? Или может версию обновляли?
  8. VIPOS
    Offline

    VIPOS Опытный в 1С

    Регистрация:
    12 сен 2012
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    29
  9. TopicStarter Overlay
    rerewe
    Offline

    rerewe

    Регистрация:
    23 ноя 2012
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Есть обработки которые работают по регламенту ночью, сам ставил, проверял, отрабатывает отлично. Последний месяц все грузилось без проблем. Сейчас проверяю код. Суть обработок загрузка информации о продажах с сайта. Но сегодня ночью FTP был не доступен и соответственно загрузка не отработала. Есть мысля, что это с этим связано, сейчас разбираюсь.

    Причем читает формат xml, сейчас написал идентичную обработку но с csv

    Забыл сказать что система не обновлялась
  10. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а что обработки загрузки информации о продажах должны затирать контактную информации о контрагентах?
  11. TopicStarter Overlay
    rerewe
    Offline

    rerewe

    Регистрация:
    23 ноя 2012
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Сейчас попробую код дать
  12. VIPOS
    Offline

    VIPOS Опытный в 1С

    Регистрация:
    12 сен 2012
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    29
    Просто на одном из форумов вычитал (не ручаюсь за истинность информации), но после скачивания какой-то внешней обработки стали пропадать некоторые документы,
    хотя обработка сама отрабатывала на УРА.... только после детального изучения ее кода выяснилось в чем проблема...
  13. TopicStarter Overlay
    rerewe
    Offline

    rerewe

    Регистрация:
    23 ноя 2012
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Первая процедура исполняет отключения регламента

    Код:
    Процедура ОтключениеРегламента()
    ТекущееЗадание = РегламентныеЗадания.НайтиПредопределенное("ОбновлениеИндексаПолнотекстовогоПоиска");
    РасписаниеТекущегоЗадания = ТекущееЗадание.Расписание;
    
    Расписание = Новый РасписаниеРегламентногоЗадания;
    Расписание.ПериодПовтораДней = 2;
    Расписание.ВремяНачала = 12.00;
    
    Если РасписаниеТекущегоЗадания <> Расписание Тогда
    Задание = РегламентныеЗадания.НайтиПредопределенное("ОбновлениеИндексаПолнотекстовогоПоиска");
    Задание.Расписание = Расписание;
    Задание.Записать();
    КонецЕсли;
    
    КонецПроцедуры
    При открытии.
    Обработка исполняется при запуске 1С. Поставил в шедуллер батник на запуск 1С и запуск обработки

    Код:
    Процедура ПриОткрытии()
    
    ОтключениеРегламента();
    ФайлЛога = Новый ТекстовыйДокумент;
    ДатаФайла=ТекущаяДата()-172800;
    СтрокаДата=Формат(ДатаФайла, "ДФ=""гггг-ММ-дд""");
    ИмяФ="название"+СтрокаДата+".xml";
    
    ПутьКФайлу = "путь локальный"+ИмяФ;
    Попытка
    FTP = Новый FTPСоединение("сервак","порт","логин","пароль");
    FTP.Получить(ИмяФ, ПутьКФайлу);
    Исключение;
    КонецПопытки;
    
    Если НЕ ПустаяСтрока(ПутьКФайлу) Тогда
    ЧтениеХМЛ();
    КонецЕсли;
    ФайлЛога.Записать("путь лога и название", "windows-1251");
    ЗавершитьРаботуСистемы(Ложь);
    КонецПроцедуры
    
    Сейчас саму процедуру дам
  14. TopicStarter Overlay
    rerewe
    Offline

    rerewe

    Регистрация:
    23 ноя 2012
    Сообщения:
    49
    Симпатии:
    0
    Баллы:
    1
    Код:
    Процедура ЧтениеХМЛ()
    
    ФайлЛога.ДобавитьСтроку("Дата начала работы обработки загрузки: "+ТекущаяДата());
    ВремяНачалаРаботы = Дата(ТекущаяДата());
    РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеИтогов(Ложь);
    Чтение = Новый ЧтениеXML;
    Чтение.ОткрытьФайл(ПутьКФайлу);	 
    Спр="";
    АдресНаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
    АдресНаборЗаписей.Прочитать();
    ТТ = Новый ТаблицаЗначений;
    тт.Колонки.Добавить("Номенклатура");
    ТТ.Колонки.Добавить("Количество");
    ТТ.Колонки.Добавить("Цена");
    тт.Очистить();
    ПрочиеРасходы=Справочники.ПрочиеДоходыИРасходы.НайтиПоКоду("00040");
    Пока Чтение.Прочитать() Цикл
    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
    Если Чтение.Имя="payments_list" Тогда
    Пока Чтение.ПрочитатьАтрибут() Цикл
    Если Чтение.Имя="from_date" Тогда
    СтрокаДата = Чтение.Значение;
    ДатаФайла=Дата(число(сред(СтрокаДата,1,4)),число(сред(СтрокаДата,6,2)),число(сред(СтрокаДата,9,2)));
    КонецЕсли;
    КонецЦикла;
    ПлатСистема = Чтение.Значение;
    КонецЕсли;
    Если Чтение.Имя="pay_system" Тогда
    Чтение.Прочитать();
    Чтение.Прочитать();
    ПлатСистема = Чтение.Значение;
    Операция = Документы.ОперацияБух.СоздатьДокумент();
    ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(Операция, глЗначениеПеременной("глТекущийПользователь"), , "Продажа");
    Операция.Комментарий = "Операция создана автоматически обработкой загрузки из xml";
    Операция.Дата = ДатаФайла;
    Операция.Записать();
    КонтрагентДт = Справочники.Контрагенты.НайтиПоКоду(ПлатСистема);
    ДоговорДт = КонтрагентДт.ОсновнойДоговорКонтрагента;
    ОбСуммаОперации = 0;
    Комиссия=0;
    КонецЕсли;
    Если Чтение.Имя="комиссия" Тогда
    Чтение.Прочитать();
    Комиссия = число(Чтение.Значение);
    КонецЕсли;
    Если Чтение.Имя="order" Тогда
    Чтение.Прочитать();
    Заказ = Чтение.Значение;
    КонецЕсли;	
    Если Чтение.Имя="goods" Тогда
    Пока Чтение.ПрочитатьАтрибут() Цикл
    Если Чтение.Имя="id_1c" Тогда
    // СОПОСТОВЛЕНИЕ НОМЕНКЛАТУРЫ В ВЫГРУЗКЕ И В СИСТЕМЕ
    Если Чтение.Значение = "00000000001" Тогда
    СтрокаТТ = ТТ.Добавить();
    СтрокаТТ.Номенклатура = "00000000002";
    ИначеЕсли
    Чтение.Значение = "00000000002" Тогда
    СтрокаТТ = ТТ.Добавить();
    СтрокаТТ.Номенклатура = "00000000003";
    ИначеЕсли
    Чтение.Значение = "00000000003" Тогда
    СтрокаТТ = ТТ.Добавить();
    СтрокаТТ.Номенклатура = "00000000004";
    ИначеЕсли
    Чтение.Значение = "00000000004" Тогда
    СтрокаТТ = ТТ.Добавить();
    СтрокаТТ.Номенклатура = "00000000005";
    ИначеЕсли
    Чтение.Значение = "00000000005" Тогда
    СтрокаТТ = ТТ.Добавить();
    СтрокаТТ.Номенклатура = "00000000006";
    ИначеЕсли
    Чтение.Значение = "00000000006" Тогда
    СтрокаТТ = ТТ.Добавить();
    СтрокаТТ.Номенклатура = "00000000007";
    ИначеЕсли
    Чтение.Значение = "00009999669" Тогда
    Перейти ~ДОСТАВКА;
    Иначе
    СтрокаТТ = ТТ.Добавить();
    СтрокаТТ.Номенклатура = Чтение.Значение;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;
    Если Чтение.Имя="price" Тогда
    Чтение.Прочитать();
    Если Чтение.Значение=0 ИЛИ Чтение.Значение="0.00" Тогда
    Продолжить;
    Иначе
    СтрокаТТ.Цена=Число(Чтение.Значение);
    КонецЕсли;
    КонецЕсли;
    Если Чтение.Имя="quantity" Тогда
    Чтение.Прочитать();
    СтрокаТТ.Количество = Число(Чтение.Значение);
    КонецЕсли;
    Если Чтение.Имя="name" Тогда
    Чтение.Прочитать();
    Заказчик =  Чтение.Значение;
    
    КонецЕсли;
    Если Чтение.Имя="mail" Тогда
    
    Чтение.Прочитать();
    Емайл = Чтение.Значение;
    КонецЕсли;
    Если Чтение.Имя="phone" Тогда
    
    Чтение.Прочитать();
    Телефон = Чтение.Значение;
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | КонтактнаяИнформация.Объект КАК Контрагент
    |ИЗ
    | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    | КонтактнаяИнформация.Тип = &Тип
    | И КонтактнаяИнформация.Вид = &Вид
    | И КонтактнаяИнформация.Представление ПОДОБНО &Представление
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    | Контрагенты.Ссылка
    |ИЗ
    | Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    | Контрагенты.Наименование = &Наименование";
    
    Запрос.УстановитьПараметр("Представление", Емайл);
    Запрос.УстановитьПараметр("Вид",Справочники.ВидыКонтактнойИнформации.ДругаяИнформацияКонтрагента );
    Запрос.УстановитьПараметр("Тип", Перечисления.ТипыКонтактнойИнформации.Другое);
    Запрос.УстановитьПараметр("Наименование",Заказчик );
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Если Выборка.Количество()>0 Тогда
    
    Пока Выборка.Следующий() Цикл
    Контрагент = Выборка.Контрагент;
    КонецЦикла;
    Иначе
    
    Контрагент = Справочники.Контрагенты.СоздатьЭлемент();
    Контрагент.Наименование = Заказчик;
    Контрагент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо;
    Контрагент.НаименованиеПолное = Заказчик;
    
    Контрагент.Записать();
    Контрагент.ГоловнойКонтрагент = Контрагент.Ссылка;
    Контрагент.Записать();
    Адрес = АдресНаборЗаписей.Добавить();
    Адрес.Объект = Контрагент.Ссылка;
    Адрес.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
    Адрес.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
    Адрес.Представление = Телефон;
    АдресНаборЗаписей.Записать();
    Адрес = АдресНаборЗаписей.Добавить();
    Адрес.Объект = Контрагент.Ссылка;
    Адрес.Тип = Перечисления.ТипыКонтактнойИнформации.Другое;
    Адрес.Вид = Справочники.ВидыКонтактнойИнформации.ДругаяИнформацияКонтрагента;   
    Адрес.Представление = Емайл;
    АдресНаборЗаписей.Записать();
    КонецЕсли;
    
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | ДоговорыКонтрагентов.Ссылка
    |ИЗ
    | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
    |ГДЕ
    | ДоговорыКонтрагентов.Владелец = &Владелец
    | И ДоговорыКонтрагентов.Номер = &Номер";
    
    Запрос.УстановитьПараметр("Владелец",Контрагент.Ссылка );
    Запрос.УстановитьПараметр("Номер", Заказ);
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Если Выборка.Количество()>0  Тогда
    Пока Выборка.Следующий() Цикл
    Договор = Выборка.Ссылка;
    КонецЦикла;
    Иначе
    Договор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
    Договор.Владелец = Контрагент.Ссылка;
    Договор.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
    Договор.Номер = Заказ;
    Договор.Дата = ДатаФайла;
    Договор.Организация = Справочники.Организации.НайтиПоКоду("000000001");//Операция.Организация;
    Договор.Наименование = Договор.Номер +" от "+Договор.Дата;
    Договор.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("643");
    Договор.Записать();
    КонецЕсли;   
    
    КонецЕсли;
    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
    Если Чтение.Имя="payment" Тогда
    //Создать операцию и контрагента
    Проводка = Операция.Движения.Хозрасчетный;
    Для Каждого строкаТТ из ТТ Цикл
    НоваяСтрока = Проводка.Добавить();
    НоваяСтрока.Регистратор = Операция;
    НоваяСтрока.Период = Операция.Дата;
    НоваяСтрока.СчетДт = ПланыСчетов.Хозрасчетный.РасчетыСПрочимиПоставщикамиИПодрядчиками;
    НоваяСтрока.СубконтоДт.Контрагенты = КонтрагентДт;
    НоваяСтрока.СубконтоДт.Договоры = ДоговорДт;
    НоваяСтрока.СчетКт = ПланыСчетов.Хозрасчетный.РасчетыПоАвансамПолученным;
    НоваяСтрока.СубконтоКт.Контрагенты = Контрагент.Ссылка;
    НоваяСтрока.СубконтоКт.Договоры = Договор.Ссылка;
    НоваяСтрока.КоличествоКт = СтрокаТТ.Количество;
    НоваяСтрока.Содержание = СтрокаТТ.Номенклатура;
    НоваяСтрока.Сумма = СтрокаТТ.Цена * СтрокаТТ.Количество;
    ОбСуммаОперации = ОбСуммаОперации + СтрокаТТ.Цена * СтрокаТТ.Количество;
    КонецЦикла;
    Проводка.Записать();
    ТТ.Очистить();
    КонецЕсли;
    
    Если Чтение.Имя="комиссия" Тогда
    Если Комиссия = 0 Тогда
    СуммаКомиссии=0
    Иначе
    СуммаКомиссии=окр(ОбСуммаОперации*Комиссия/100,2);
    НоваяСтрока = Проводка.Добавить();
    НоваяСтрока.Регистратор = Операция;
    НоваяСтрока.Период = Операция.Дата;
    НоваяСтрока.СчетКт = ПланыСчетов.Хозрасчетный.РасчетыСПрочимиПоставщикамиИПодрядчиками;
    НоваяСтрока.СубконтоКт.Контрагенты = КонтрагентДт;
    НоваяСтрока.СубконтоКт.Договоры = ДоговорДт;
    НоваяСтрока.СчетДт = ПланыСчетов.Хозрасчетный.ПрочиеРасходы;
    НоваяСтрока.СубконтоДт.ПрочиеДоходыИРасходы = ПрочиеРасходы;
    НоваяСтрока.Содержание = "Комиссия платежной системы";
    НоваяСтрока.Сумма = СуммаКомиссии;
    ОбСуммаОперации = ОбСуммаОперации + СуммаКомиссии;
    Проводка.Записать();
    КонецЕсли;
    
    Операция.СуммаОперации = ОбСуммаОперации;
    Операция.Записать();
    Сообщить("Записан документ "+Операция);
    ОбСуммаОперации = 0;
    Комиссия = 0;
    
    
    КонецЕсли;
    
    КонецЕсли;
    
    ~ДОСТАВКА:
    КонецЦикла;
    РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеИтогов(Истина);
    ВремяОкончанияРаботы = Дата(ТекущаяДата());
    Сообщить("Время начала работы: "+ВремяНачалаРаботы);
    Сообщить("Время окончания работы: "+ВремяОкончанияРаботы);
    ФайлЛога.ДобавитьСтроку("Дата окончания работы обработки загрузки: "+ТекущаяДата());
    
  15. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    В код особо не вглядывался. Но... У Вас там явно создается набор записей в этом регистре. :) (Во я капитан очевидность). Он по-любому пустой и затирает все записи.Вы же отбор не накладываете. На копии с заполненными данными запустите эту процедуру. Посмотрите отладчиком что помещается в этот набор данных и состояние регистра на каждой стадии отлавливайте. Истина, где-то рядом.
  16. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    nbIpKuH_BaH9I, нет, он не пустой.
  17. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Да, точно. Невнимательность моя.

    Ну в любом случае нужно отлаживать.

Поделиться этой страницей