Ошибка при вызове метода контекста записать значение поля дата не может быть пустой датой

Посмотрите что не верно в этом коде

Автор ildarik_58, 27 фев 2013, 09:47

0 Пользователей и 1 гость просматривают эту тему.

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

      ВыборкаПланПроизводства = Документы.ПланПроизводства.Выбрать(НачалоПериода, КонецПериода);

            Пока ВыборкаПланПроизводства.Следующий() Цикл

            ДокументОбъект = Документы.Заказнапроизводство.СоздатьДокумент();
      ДокументОбъект.Заполнить(ПланПроизводства);
      ДокументОбъект.Записать();

         КонецЦикла;

         КонецПроцедуры

Я пытаюсь отобрать документы за период. И на основании документов «ПланПроизводства», создать документ Заказ на производство


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

      ВыборкаПланПроизводства = Документы.ПланПроизводства.Выбрать(НачалоПериода, КонецПериода);

            Пока ВыборкаПланПроизводства.Следующий() Цикл

            ДокументОбъект = Документы.Заказнапроизводство.СоздатьДокумент();
      ДокументОбъект.Заполнить(ВыборкаПланПроизводства.Ссылка);
      ДокументОбъект.Записать();

         КонецЦикла;

         КонецПроцедуры

Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


спасиббо

Добавлено: 27 фев 2013, 13:08


{Форма.Форма.Форма(10)}: Ошибка при вызове метода контекста (Записать)
      ДокументОбъект.Записать();
по причине:
Значение поля «Дата» не может быть пустой датой


Присвойте ДокументОбъект.Дата = ТекущаяДата(); или ту дату которые вы хотите!

Помогли, отблагодари!


в какую часть кода надо вставить эту запись?


Между заполнить и записать

Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


почему тогда он выводит синтаксическую ошибку:{Форма.Форма.Форма(10,39)}: Ожидается символ ‘;’
     ДокументОбъект.Дата = ТекущаяДата()<<?>> (Проверка: Толстый клиент (обычное приложение))

Добавлено: 27 фев 2013, 14:55


Цитата: ildarik_58 от 27 фев 2013, 14:40
почему тогда он выводит синтаксическую ошибку:{Форма.Форма.Форма(10,39)}: Ожидается символ ‘;’
     ДокументОбъект.Дата = ТекущаяДата()<<?>> (Проверка: Толстый клиент (обычное приложение))


Точку с запятой поставьте после ТекущаяДата()


запустил обработку! пару секунд! подумала и никакого результата не произошло!


Люди даже не могут прочитать текст ошибки! Вот что значит просто копировать, а своей головой не думать! :befhbt:

Добавлено: 27 фев 2013, 15:15


Может в выборка вам не чего не дала! проверьте есть ли документы в том периоде что вы задали!

Помогли, отблагодари!


Проблема с типом данных Дата

Я
   kap-v-kstu

16.12.12 — 20:56

ИначеЕсли

ЧтениеXML.Имя = «DocDate»  

Тогда DocDate = ЧтениеXML.Значение;

КонецЕсли;

Date = Строка(DocDate);

Сообщить(«‘»+Date+»‘»);

Док.Дата = «‘»+Date+»‘»;

в файле в DocDate хранится DocDate=»20150308″

   kap-v-kstu

1 — 16.12.12 — 20:57

Док не записываетсЯ из=за неправильного формата даты.

Если пишу Док.Дата = ТекущаяДата(), то все ок.

   kap-v-kstu

2 — 16.12.12 — 20:58

в чем может быть проблема? спасибо

   kap-v-kstu

3 — 16.12.12 — 21:00

в  Date значение из файла попадает

   Undefined vs NULL

4 — 16.12.12 — 21:02

Date = Строка(DocDate);

Док.Дата = Дата(Date);

   kap-v-kstu

5 — 16.12.12 — 21:20

Функция дата() для формата 2015,03,08. А у меня 20150308…

   Ctyd

6 — 16.12.12 — 22:24

Выполнить(«Док.Дата = ‘»+Date+»‘»);

мож так получиться

   kap-v-kstu

7 — 16.12.12 — 22:41

не получается…в чем может быть проблема??

   DrShad

8 — 16.12.12 — 22:43

а DocDate какой вид имеет?

   France

9 — 16.12.12 — 22:45

а чем на «Дата(Date)» ругуется то?? (и, ваще то,date зарезервировано, не?)

   kap-v-kstu

10 — 16.12.12 — 22:51

DocDate=»20150308″

{Форма.Форма.Форма(200)}: Ошибка при вызове метода контекста (Записать): Значение поля «Дата» не может быть пустой датой

   kap-v-kstu

11 — 16.12.12 — 22:53

{Форма.Форма.Форма(73)}: Преобразование значения к типу Дата не может быть выполнено

                   Док.Дата = Дата(Date);

   Ctyd

12 — 16.12.12 — 22:55

Дата=’00010101′;

   ДатаСтрока=»20150308″;

   Выполнить(«Дата = ‘»+ДатаСтрока+»‘»);

Все работает.. если Датастрока верная

   DrShad

13 — 16.12.12 — 22:56

(10) к чему тогда лишние привидение к строке Date = Строка(DocDate);?

   kap-v-kstu

14 — 16.12.12 — 22:57

{Форма.Форма.Форма(75)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода

                   Выполнить(«Дата = ‘»+Date+»‘»);

по причине:

{(1,8)}: Неправильная константа типа Дата

Дата = <<?>>»

   France

15 — 16.12.12 — 22:58

Date — зарезервировано!

   France

16 — 16.12.12 — 22:59

назови его «этадурацкаядата», и должно наступить счастье

   Ctyd

17 — 16.12.12 — 23:04

(16) Так точно!

(14) Выполнить(«Док.Дата = ‘»+Date+»‘»);

   Ctyd

18 — 16.12.12 — 23:08

тебе ошибку написало.

   kap-v-kstu

19 — 16.12.12 — 23:13

{Форма.Форма.Форма(75)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода

                   Выполнить(«Док.Дата = ‘»+Date+»‘»);

по причине:

{(1,12)}: Неправильная константа типа Дата

Док.Дата = <<?>>»

   France

20 — 16.12.12 — 23:15

ле, напиши да Док.Дата  =  Date(ЧтениеХМЛ.Значение) и радуйся жизни..

   kap-v-kstu

21 — 16.12.12 — 23:17

Док.Дата = Дата(1980,12,05)  — норм

так не срабатывает:

текст = «1980,12,05»;

Док.Дата = Дата(текст);

в чем разница??

   France

22 — 16.12.12 — 23:17

теперь напиши «Дата(чтениеХМЛ.Значение)

   kap-v-kstu

23 — 16.12.12 — 23:20

Форма.Форма.Форма(81)}: Преобразование значения к типу Дата не может быть выполнено

                  Док.Дата  =  Date(ЧтениеXML.Значение);

   DrShad

24 — 16.12.12 — 23:20

(21) а ты сам не видишь? в первом случае у тебя три цифры, а во втором текст

   kap-v-kstu

25 — 16.12.12 — 23:22

И каким образом тогдат передавать текст в функцию дата()??я же беру этот текст из xml

   DrShad

26 — 16.12.12 — 23:24

(25) то что в (22) что говорит?

   kap-v-kstu

27 — 16.12.12 — 23:25

Форма.Форма.Форма(81)}: Преобразование значения к типу Дата не может быть выполнено

                 Док.Дата  =  Date(ЧтениеXML.Значение);

   France

28 — 16.12.12 — 23:26

что интересно в «ЧтениеХМЛ.Значение»..

   DrShad

29 — 16.12.12 — 23:29

(28) +100500 и откуда оно туда попало

   kap-v-kstu

30 — 16.12.12 — 23:41

«20150308» Смотрел в отладчике

   DrShad

31 — 16.12.12 — 23:43

(30) откуда файл получил? у всех нормальных прогов в XML тип дата выгружается как тип дата

   France

32 — 16.12.12 — 23:44

тут чудеса, тут леший бродит..

разбери на части, и суй в дату..

   kap-v-kstu

33 — 16.12.12 — 23:49

Файл мне выгружают?даже не знаю кто

   DrShad

34 — 16.12.12 — 23:54

(33) ну тогда (32) и не парься

  

kap-v-kstu

35 — 16.12.12 — 23:56

ща попробую, спасибо большое_)

Ermak
30.10.2012 22:41 Прочитано: 6808

Подскажите что не так?
Существует справочник Групповые, в справочнике есть реквизит наименование, район и табличная часть Улицы (Реквизиты — Улица и Дом). Есть файл excel с колонками Район, Улица, Дом. Пытаюсь закачать файл с проверкой по, загрузить в табличную часть улицы и дома с одинаковым районом.Код 1C v 8.х

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

//проверим что файл существует
ФайлНаДиске = Новый Файл(Файл);
Если Не ФайлНаДиске.Существует() Тогда
Предупреждение("Файл не найден!");
Возврат;
КонецЕсли;

Ex = ПолучитьТаблицуExcel(Файл);

Спр = Справочники.Групповые;

НС = 1;
Пока Истина Цикл
Если Спр.НайтиПоРеквизиту("Район", ) = СокрЛП(Ex.Cells(НС,1).Value) Тогда
Об=Спр.СоздатьЭлемент();
К=Об.Улицы.Добавить();
К.Улица = СокрЛП(Ex.Cells(НС,2).Value);
К.Дом = СокрЛП(Ex.Cells(НС,3).Value);

Об.Записать();
Сообщить("-Создан элемент: "+Об.Наименование);
КонецЕсли;

#Если Клиент Тогда
Состояние("Номер обработанной строки: " + НС);
#КонецЕсли
НС = НС + 1;
КонецЦикла;
Ex.Quit();

КонецПроцедуры

Yandex
Возможно, вас также заинтересует

Реклама на портале

Ermak
31.10.2012 11:40 Ответ № 1

????

Ermak
31.10.2012 17:02 Ответ № 2

Подскажите!

Mokey
31.10.2012 17:21 Ответ № 3

а что Вас не устраивает?
код ни о чём.
сравниваете несравнимые типы, это для начала
потом цикл по ИСТИНА где прерывается?


Изменено 31.10.12 17:24:10

Ermak
31.10.2012 17:27 Ответ № 4

*09

Ermak
31.10.2012 17:42 Ответ № 5

А как мне поставить условие, если реквизит РУ = значению в Колонка1 тогда заполняем Табличную часть

Mokey
31.10.2012 17:54 Ответ № 6

Код 1C v 8.х

 
Если СокрЛП(Ex.Cells(НС,1).Value) = "" Тогда Прервать КонецЕсли; //это выход из цикла
ЗначениеРУ = СокрЛП(Ex.Cells(НС,1).Value); //считываем значение
Если НЕ Спр.НайтиПоРеквизиту("Район", ЗначениеРУ).Пустая() Тогда //ищем по реквизиту
.....
КонецЕсли;
Ermak
31.10.2012 18:42 Ответ № 7

че та не добавляет а создает новые пустые документыКод 1C v 8.х

 //проверим что файл существует
ФайлНаДиске = Новый Файл(Файл);
Если Не ФайлНаДиске.Существует() Тогда
Предупреждение("Файл не найден!");
Возврат;
КонецЕсли;

Ex = ПолучитьТаблицуExcel(Файл);

Спр = Справочники.Групповые;

НС = 1;
Пока Истина Цикл
Если СокрЛП(Ex.Cells(НС,1).Value) = "" Тогда
Прервать
КонецЕсли; //это выход из цикла

ЗначениеРУ = СокрЛП(Ex.Cells(НС,1).Value); //считываем значение

Если НЕ Спр.НайтиПоРеквизиту("РУ", ЗначениеРУ).Пустая() Тогда //ищем по реквизиту
Об=Спр.СоздатьЭлемент();
К=Об.Улицы.Добавить();
К.Улица = СокрЛП(Ex.Cells(НС,2).Value);
К.Дом = СокрЛП(Ex.Cells(НС,3).Value);

Об.Записать();
Сообщить("-Создан элемент: "+Об.Наименование);
КонецЕсли;

#Если Клиент Тогда
Состояние("Номер обработанной строки: " + НС);
#КонецЕсли
НС = НС + 1;
КонецЦикла;
Ex.Quit();


Изменено 31.10.12 18:43:56

Mokey
01.11.2012 10:01 Ответ № 8

(7) Ermak, давайте определимся, что Вы хотите получить. В вышеприведённом коде написано, что если нашли элемент с искомым значением, то добавляем новый элемент справочника (создаём) и заполняем его ТЧ.Улицы. Естесственно, что элемент как бы пустой (нет наименования). Я так подозреваю, что Вы хотите отредактировать найденный элемент, тогда надо получить найденный объект, код будет примерно таким:
Код 1C v 8.х

 
ЗначениеРУ = СокрЛП(Ex.Cells(НС,1).Value); //считываем значение
НайденныйЭлемент = Спр.НайтиПоРеквизиту("РУ", ЗначениеРУ); //ищем по реквизиту
Если НЕ НайденныйЭлемент.Пустая() Тогда //проверка, нашли - не нашли
Об=НайденныйЭлемент.ПолучитьОбъект();
Иначе
Об=Спр.СоздатьЭлемент();
Об.РУ=ЗначениеРУ;
КонецЕсли;
//здесь заполняем ТЧ.Улицы объекта
...

Изменено 01.11.12 10:05:06

Ermak
01.11.2012 11:20 Ответ № 9

Вы правильно подозреваете )
Я проверил, сначала стала заполнять и создавать еще пустые новые документы, но теперь опять выдает ошибку
{Форма.Форма.Форма(35)}: Значение не является значением объектного типа (Улицы)
ТЧ = Об.Улицы.Добавить();
Код 1C v 8.х

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

//проверим что файл существует
ФайлНаДиске = Новый Файл(Файл);
Если Не ФайлНаДиске.Существует() Тогда
Предупреждение("Файл не найден!");
Возврат;
КонецЕсли;

Ex = ПолучитьТаблицуExcel(Файл);

Спр = Справочники.Групповые;

НС = 1;
Пока Истина Цикл
Если СокрЛП(Ex.Cells(НС,1).Value) = "" Тогда
Прервать
КонецЕсли; //это выход из цикла

ЗначениеРУ = СокрЛП(Ex.Cells(НС,1).Value); //считываем значение
ЗначениеРУ2 = СокрЛП(Ex.Cells(НС,2).Value);
ЗначениеРУ3 = СокрЛП(Ex.Cells(НС,3).Value);
ЗначениеРУ4 = СокрЛП(Ex.Cells(НС,4).Value);

НайденныйЭлемент = Спр.НайтиПоРеквизиту("РУ", ЗначениеРУ); //ищем по реквизиту

Если НЕ НайденныйЭлемент.Пустая() Тогда //проверка, нашли - не нашли
Об=НайденныйЭлемент.ПолучитьОбъект();
Иначе
Сообщить ("Все!!!")
КонецЕсли;
ТЧ = Об.Улицы.Добавить();
ТЧ.Улица = ЗначениеРУ2;
ТЧ.Дом = ЗначениеРУ3 ;
ТЧ.Кв = ЗначениеРУ4 ;

Об.Записать();
Сообщить("-Создан элемент: "+Об.Наименование);

#Если Клиент Тогда
Состояние("Номер обработанной строки: " + НС);
#КонецЕсли
НС = НС + 1;
КонецЦикла;
Ex.Quit();
КонецПроцедуры

Ничего вроде не делал, а почему ошибка не пойму. И еще вот ТЧ.Улица имеет тип Строка, а мне надо Тип Справочники , если ставлю тип справочники тогда не заполняет.

Mokey
01.11.2012 11:24 Ответ № 10

Ошибку выдаёт потому, что вываливается в ИНАЧЕ, объекта в этом случае нет, допишите тогда выход из процедуры или продолжить цикл.
Код 1C v 8.х

 
Если НЕ НайденныйЭлемент.Пустая() Тогда //проверка, нашли - не нашли
Об=НайденныйЭлемент.ПолучитьОбъект();
Иначе
Сообщить ("Все!!!");
Прервать; // или Продолжить;

КонецЕсли;

Ermak
01.11.2012 11:26 Ответ № 11

Все разобрался с ошибкой, подскажите по этому вопросу как быть

И еще вот ТЧ.Улица имеет тип Строка, а мне надо Тип Справочники , если ставлю тип справочники тогда не заполняет.

Mokey
01.11.2012 11:28 Ответ № 12

С типом Справочник — да, записывать не будет, потому что надо искать ссылку в справочнике и записывать найденную ссылку.
Код 1C v 8.х

 
УлицаСсылка = Справочники.Улицы.НайтиПоНаименованию(ЗначениеРУ2); //например, я не знаю, как Ваш справочник с улицами называется
ТЧ.Улица = УлицаСсылка;
Ermak
01.11.2012 11:45 Ответ № 13

Спасибо получилось.

В форме списка справочника у меня добавлена Табличное поле с колонками Улица, Дом, Квартира , я пытаюсь загрузить данные с формы документа ТЧ.

Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ГрупповыеУлицы.НомерСтроки КАК Колонка4,
| ГрупповыеУлицы.Улица КАК Колонка1,
| ГрупповыеУлицы.Дом КАК Колонка2,
| ГрупповыеУлицы.Кв КАК Колонка3
|ИЗ
| Справочник.Групповые.Улицы КАК ГрупповыеУлицы»;
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТабличноеПоле1.Значение = Результат;

Смысл в чем, в форме списка, когда нажимаешь на строчку в ТП показываются улицы которые принадлежат данной улице из списка.
Я в какое событие поставить?

Mokey
01.11.2012 12:07 Ответ № 14

(13) Ermak, не понял вопроса, к сожалению

Mokey
01.11.2012 12:08 Ответ № 15

вообще есть событие ПриАктивацииСтроки()

Ermak
01.11.2012 12:15 Ответ № 16

При этом событии не работает!

Постараюсь еще раз объяснить:
В Форме списка Табличного поля СправочникСписок добавил еще Табличное поле ТабличноеПоле1 в которой будет выводиться информация с Табличной части Формы Элемента. Т.е нажатии на строчку в СправочникСписок выводится информация ТабличноеПоле1

Mokey
01.11.2012 13:45 Ответ № 17

(15) Mokey,

Процедура СправочникСписокПриАктивацииСтроки()
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ГрупповыеУлицы.НомерСтроки КАК Колонка4,
| ГрупповыеУлицы.Улица КАК Колонка1,
| ГрупповыеУлицы.Дом КАК Колонка2,
| ГрупповыеУлицы.Кв КАК Колонка3
|ИЗ
| Справочник.Групповые.Улицы КАК ГрупповыеУлицы
|ГДЕ //тут условие надо поставить на данные из текущей строки»;
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТабличноеПоле1.Значение = Результат;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
КонецПроцедуры


Изменено 01.11.12 13:49:07

Mokey
01.11.2012 13:51 Ответ № 18

а вообще, подумал сейчас, зачем огород городить? это же ТЧ элемента, поэтому надо в значение ТабличноеПоле1 выставить ТЧ.Улицы и связать два поля поля Ссылке.
Всё делается без единой строчки кода.


Изменено 01.11.12 13:53:13

Ermak
01.11.2012 14:35 Ответ № 19

Спасибо разобрался! )

Я пытаюсь с Excel загрузить документ там есть колонка с датой, я пытаюсь загрузить в реквиз дата и он выдает ошибку

{Форма.Форма.Форма(22)}: Ошибка при вызове метода контекста (Записать)
Об.Записать();
по причине:
Значение поля «Дата» не может быть пустой датой

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

//проверим что файл существует
ФайлНаДиске = Новый Файл(Файл);
Если Не ФайлНаДиске.Существует() Тогда
Предупреждение(«Файл не найден!»);
Возврат;
КонецЕсли;

Ex = ПолучитьТаблицуExcel(Файл);

Док = Документы.Заправка;
НС = 1;
Пока Истина Цикл
Об=Док.СоздатьДокумент();
Об.Дата = СокрЛП(Ex.Cells(НС,1).NumberFormat=»ДД.ММ.ГГГГ»);
Об.Улица = СокрЛП(Ex.Cells(НС,2).Value);
Об.Дом = СокрЛП(Ex.Cells(НС,3).Value);
Об.Кол = СокрЛП(Ex.Cells(НС,4).Value);
Об.РУ = СокрЛП(Ex.Cells(НС,5).Value);
Об.Записать();
Сообщить(«-Создан элемент: «+Об.Улица);

//Если Об.Улица = «» Тогда
// Прервать;
// КонецЕсли;

#Если Клиент Тогда
Состояние(«Номер обработанной строки: » + НС);
#КонецЕсли
НС = НС + 1;
КонецЦикла;
Ex.Quit();

КонецПроцедуры

Что не так?

Mokey
01.11.2012 15:24 Ответ № 20

Пытаетесь в реквизит с типом дата вписать строку. Переводите полученную строку из экселя в дату.

Ermak
01.11.2012 15:42 Ответ № 21

КАК?

Mokey
01.11.2012 15:50 Ответ № 22

Если выложите, что выдаёт выражение Ex.Cells(НС,1).NumberFormat=»ДД.ММ.ГГГГ», то смогу Вам помочь, хотя на вопрос «КАК?» посылаются обычно читать синтаксис-помощник. Да, и ещё, в каком виде в экселе дата забита?

Ermak
01.11.2012 15:58 Ответ № 23

02.01.2007

Mokey
01.11.2012 16:03 Ответ № 24

Тогда надо так:
Дата(СокрЛП(Ex.Cells(НС,1).NumberFormat=»ГГГГММДД»))

Ermak
01.11.2012 16:14 Ответ № 25

А что за переменная Дата ?

У меня строчка такая

Код 1C v 8.х

 Об.Дата = СокрЛП(Ex.Cells(НС,1).NumberFormat="ДД.ММ.ГГГГ");   
Mokey
01.11.2012 16:26 Ответ № 26

Это не переменная, это функция преобразования. Я всё написал.

Ermak
01.11.2012 16:37 Ответ № 27

Выдает ошибку

{Форма.Форма.Форма(17)}: Преобразование значения к типу Дата не может быть выполнено
Об.Дата=Дата(СокрЛП(Ex.Cells(НС,1).NumberFormat=»ГГГГММДД»));

Mokey
01.11.2012 16:48 Ответ № 28

А я Вас просил показать, что на выходе выражения Ex.Cells(НС,1).NumberFormat=»ГГГГММДД»

Ermak
01.11.2012 16:52 Ответ № 29

Выложил обработку и файл Скачивать файлы может только зарегистрированный пользователь!


Изменено 01.11.12 16:53:54

Mokey
01.11.2012 16:55 Ответ № 30

да мне обработка не нужна, данных всё равно нет

Ermak
01.11.2012 17:01 Ответ № 31

перезагрузил с данными (Excel)

Mokey
01.11.2012 17:16 Ответ № 32

битый архив, не буду качать, проблема плёвая

Ermak
01.11.2012 17:18 Ответ № 33

Перегрузил Скачивать файлы может только зарегистрированный пользователь!

Mokey
01.11.2012 17:39 Ответ № 34

Вы мне по-порядку напишите значения выражений:
1. Ex.Cells(НС,1)
2. СокрЛП(Ex.Cells(НС,1).NumberFormat=»ДД.ММ.ГГГГ»)


Изменено 01.11.12 17:40:02

Ermak
01.11.2012 22:19 Ответ № 35

Значение в 1 колонки 02.01.2007

Ermak
02.11.2012 09:05 Ответ № 36

Тип значения : Дата
Состав даты : Дата и время

Mokey
02.11.2012 09:33 Ответ № 37

Тогда Вам надо просто написать:
Об.Дата=Ex.Cells(НС,1);

Пы.Сы. Архив всё равно битый))

Ermak
02.11.2012 09:47 Ответ № 38

Ошибку выдает

{Форма.Форма.Форма(27)}: Ошибка при вызове метода контекста (Записать)
Об.Записать();
по причине:
Значение поля «Дата» не может быть пустой датой

Перезалил на обменник http://zalil.ru/33917826

Mokey
02.11.2012 11:57 Ответ № 39

я Вас столько раз просил прислать мне то-то и то-то….
1. Ex.Cells(НС,1) — это комобъект
2.Ex.Cells(НС,1).NumberFormat=»ДД.ММ.ГГГГ» — это сравнение, соответственно возвращает булево

3. Ex.Cells(НС,1).Value — строка с Вашей датой, именно строка, и чтобы преобразовать её в дату надо функцию написать, например, я такую написал:

Код 1C v 8.х

 
Функция ПреобразоватьВДату(ДатаСтрокой)
Если (ДатаСтрокой="00000000") или (ДатаСтрокой="") тогда
Возврат Дата(0001,01,01);
Иначе
Если СтрДлина(Сред(ДатаСтрокой,7)) > 2 Тогда
ГодСтрокой = Сред(ДатаСтрокой,7);
Иначе
ГодСтрокой = "20"+Сред(ДатаСтрокой,7);
КонецЕсли;
Возврат Дата(Число(ГодСтрокой),Число(Сред(ДатаСтрокой,4,2)),Число(Сред(ДатаСтрокой,1,2)));
КонецЕсли;
КонецФункции //

Тогда применительно в Вашей задаче:
Об.Дата = ПреобразоватьВДату(СтрЗаменить(СокрЛП(Ex.Cells(НС,1).Value),».»,»»));

Ermak
02.11.2012 12:02 Ответ № 40

Спасибо большое, я не знал теперь буду знать!!!!! )

Ermak
02.11.2012 12:03 Ответ № 41

Вопрос закрыт!

Ermak
02.11.2012 12:07 Ответ № 42

А что может быть такое, загрузка пошла, дошла до 700 строки и выдала ошибку

{Форма.Форма.Форма(83)}: Преобразование значения к типу Дата не может быть выполнено
Возврат Дата(Число(ГодСтрокой),Число(Сред(ДатаСтрокой,4,2)),Число(Сред(ДатаСтрокой,1,2)));

Mokey
02.11.2012 12:21 Ответ № 43

Посмотрите в экселе 700-ю строку

Ermak
02.11.2012 12:25 Ответ № 44

Смотрел тоже сам что и все

Ermak
02.11.2012 12:38 Ответ № 45

вычислил строка 654 последнюю загружает там значение Даты 31.01.2007 а вот на строка следующая 655 значение 01.02.2007 выдает ошибку

{Форма.Форма.Форма(83)}: Преобразование значения к типу Дата не может быть выполнено
Возврат Дата(Число(ГодСтрокой),Число(Сред(ДатаСтрокой,4,2)),Число(Сред(ДатаСтрокой,1,2)));

Mokey
02.11.2012 12:49 Ответ № 46

Проанализруйте, что в ячейке в выражении СтрЗаменить(СокрЛП(Ex.Cells(НС,1).Value),».»,»»)

Ermak
02.11.2012 12:54 Ответ № 47

В том то и дело что формат ячеек у всех одинаковый и значение у ее 01.02.2007

Ermak
02.11.2012 14:21 Ответ № 48

Загружаю данные для документа выдает ошибку

{Форма.Форма.Форма(82)}: Преобразование значения к типу Дата не может быть выполнено
Возврат Дата(Число(ГодСтрокой),Число(Сред(ДатаСтрокой,4,2)),Число(Сред(ДатаСтрокой,1,2)));

Почему опять?

E_Migachev
02.11.2012 14:28 Ответ № 49

(48) Ermak, смотри чему равно на момент ошибки значение ДатаСтрокой, видимо в excel файле что-то не то стоит в считываемой ячейке

Ermak
02.11.2012 14:44 Ответ № 50

Все там стоит я не понимаю почему опять не грузит *15
Я залил на обменник http://zalil.ru/33918739

Ermak
02.11.2012 15:03 Ответ № 51

А может быть проблема из за того что у меня язык стоит EN а не RU, мне надо менять в панели управления????

E_Migachev
02.11.2012 15:07 Ответ № 52

язык не причем, проверяй отладчиком входные из екселя данные

Ermak
02.11.2012 16:22 Ответ № 53

Я переделал функцию Преобразовать в дату и все пошлоКод 1C v 8.х

  стрДата_ = СокрЛП(СтрЗаменить(стрДата,".",""));
датДата = Сред(стрДата_,5)+Сред(стрДата_,3,2)+Лев(стрДата_,2);
Если СтрДлина(стрДата_)=6 Тогда
датДата = "20"+датДата;
КонецЕсли;
Возврат Дата(датДата);

Подскажите вот я закачиваю информацию в справочник, есть реквизит Тип Справочники.Имя я прописал

Код 1C v 8.х

 УлицаСсылка = Справочники.Адреса.НайтиПоНаименованию(ЗначениеРУ2);   

а если я закачиваю в документ с реквизитом типом Справочники.Имя, как тогда прописать?

E_Migachev
02.11.2012 16:53 Ответ № 54

Имя — Это такой справочник? а зачем его в документ?

Ermak
02.11.2012 17:02 Ответ № 55

У документа есть реквизит :
Район-Поле ввода Ти Значения — Справочник.Район

Когда загружаю данные то значение пустое

E_Migachev
02.11.2012 17:40 Ответ № 56

код загрузки покажи

Ermak
03.11.2012 00:36 Ответ № 57

Код 1C v 8.х

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

//проверим что файл существует
ФайлНаДиске = Новый Файл(Файл);
Если Не ФайлНаДиске.Существует() Тогда
Предупреждение("Файл не найден!");
Возврат;
КонецЕсли;

Ex = ПолучитьТаблицуExcel(Файл);

Док = Документы.Потери;
НС = 1;

ЗначениеР1 = СокрЛП(Ex.Cells(НС,4).Value);
ЗначениеР2 = СокрЛП(Ex.Cells(НС,4).Value);

Пока Истина Цикл

Об=Док.СоздатьДокумент();
Об.Дата = ИзСтрокиВДату(СокрЛП(Ex.Cells(НС,1).Value2));
Об.Район = ЗначениеР1;
Об.Кол = СокрЛП(Ex.Cells(НС,3).Value);
Об.Вид = ЗначениеР2;
Об.Записать(РежимЗаписиДокумента.Проведение);

Сообщить("-Создан элемент: "+Об.Дата + "---"+"№"+""+ НС);

#Если Клиент Тогда
Состояние("Номер обработанной строки: " + НС);
#КонецЕсли
НС = НС + 1;
КонецЦикла;

Ex.Quit();

КонецПроцедуры

Mokey
06.11.2012 11:16 Ответ № 58

По аналогии ищите в справочнике Район элемент с наименованием ЗначениеР1.

Ermak
06.11.2012 11:44 Ответ № 59

Спасибо разобрался, все загрузилось Код 1C v 8.х

 //проверим что файл существует
ФайлНаДиске = Новый Файл(Файл);
Если Не ФайлНаДиске.Существует() Тогда
Предупреждение("Файл не найден!");
Возврат;
КонецЕсли;

Ex = ПолучитьТаблицуExcel(Файл);

Док = Документы.Потери;
НС = 1;

ЗначениеР1 = СокрЛП(Ex.Cells(НС,2).Value);
ЗначениеР2 = СокрЛП(Ex.Cells(НС,4).Value);

Пока Истина Цикл

РайонСслка = Справочники.Район.НайтиПоНаименованию(ЗначениеР1);
ВидСсылка = Справочники.ВидПотери.НайтиПоНаименованию(ЗначениеР2);

Об=Док.СоздатьДокумент();
Об.Дата = ИзСтрокиВДату(СокрЛП(Ex.Cells(НС,1).Value2));
Об.Район = РайонСслка;
Об.Кол = СокрЛП(Ex.Cells(НС,3).Value);
Об.Вид = ВидСсылка;
Об.Записать(РежимЗаписиДокумента.Проведение);

Сообщить("-Создан элемент: "+Об.Дата + "---"+"№"+""+ НС);

#Если Клиент Тогда
Состояние("Номер обработанной строки: " + НС);
#КонецЕсли
НС = НС + 1;
КонецЦикла;

Ex.Quit();

но с данными беда какая та, загрузились одинаковые данные, с одним районом, хотя в файле данные разные

Mokey
06.11.2012 12:07 Ответ № 60

Потому что Вы ЗначениеР1 вне цикла вычислили и подсовываете его каждый раз

Ermak
06.11.2012 13:40 Ответ № 61

Разобрался спасибо большое!

Подсказка: Для редактирования своего ответа щелкните по значку (справа)

Проблема с типом данных Дата

Я

  

kap-v-kstu

16.12.12 — 20:56

ИначеЕсли

ЧтениеXML.Имя = «DocDate»  

Тогда DocDate = ЧтениеXML.Значение;

КонецЕсли;

Date = Строка(DocDate);

Сообщить(«‘»+Date+»‘»);

Док.Дата = «‘»+Date+»‘»;

в файле в DocDate хранится DocDate=»20150308″

  

kap-v-kstu

1 — 16.12.12 — 20:57

Док не записываетсЯ из=за неправильного формата даты.

Если пишу Док.Дата = ТекущаяДата(), то все ок.

  

kap-v-kstu

2 — 16.12.12 — 20:58

в чем может быть проблема? спасибо

  

kap-v-kstu

3 — 16.12.12 — 21:00

в  Date значение из файла попадает

  

Undefined vs NULL

4 — 16.12.12 — 21:02

Date = Строка(DocDate);

Док.Дата = Дата(Date);

  

kap-v-kstu

5 — 16.12.12 — 21:20

Функция дата() для формата 2015,03,08. А у меня 20150308…

  

Ctyd

6 — 16.12.12 — 22:24

Выполнить(«Док.Дата = ‘»+Date+»‘»);

мож так получиться

  

kap-v-kstu

7 — 16.12.12 — 22:41

не получается…в чем может быть проблема??

  

DrShad

8 — 16.12.12 — 22:43

а DocDate какой вид имеет?

  

France

9 — 16.12.12 — 22:45

а чем на «Дата(Date)» ругуется то?? (и, ваще то,date зарезервировано, не?)

  

kap-v-kstu

10 — 16.12.12 — 22:51

DocDate=»20150308″

{Форма.Форма.Форма(200)}: Ошибка при вызове метода контекста (Записать): Значение поля «Дата» не может быть пустой датой

  

kap-v-kstu

11 — 16.12.12 — 22:53

{Форма.Форма.Форма(73)}: Преобразование значения к типу Дата не может быть выполнено

                   Док.Дата = Дата(Date);

  

Ctyd

12 — 16.12.12 — 22:55

Дата=’00010101′;

   ДатаСтрока=»20150308″;

   Выполнить(«Дата = ‘»+ДатаСтрока+»‘»);

Все работает.. если Датастрока верная

  

DrShad

13 — 16.12.12 — 22:56

(10) к чему тогда лишние привидение к строке Date = Строка(DocDate);?

  

kap-v-kstu

14 — 16.12.12 — 22:57

{Форма.Форма.Форма(75)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода

                   Выполнить(«Дата = ‘»+Date+»‘»);

по причине:

{(1,8)}: Неправильная константа типа Дата

Дата = <<?>>»

  

France

15 — 16.12.12 — 22:58

Date — зарезервировано!

  

France

16 — 16.12.12 — 22:59

назови его «этадурацкаядата», и должно наступить счастье

  

Ctyd

17 — 16.12.12 — 23:04

(16) Так точно!

(14) Выполнить(«Док.Дата = ‘»+Date+»‘»);

  

Ctyd

18 — 16.12.12 — 23:08

тебе ошибку написало.

  

kap-v-kstu

19 — 16.12.12 — 23:13

{Форма.Форма.Форма(75)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода

                   Выполнить(«Док.Дата = ‘»+Date+»‘»);

по причине:

{(1,12)}: Неправильная константа типа Дата

Док.Дата = <<?>>»

  

France

20 — 16.12.12 — 23:15

ле, напиши да Док.Дата  =  Date(ЧтениеХМЛ.Значение) и радуйся жизни..

  

kap-v-kstu

21 — 16.12.12 — 23:17

Док.Дата = Дата(1980,12,05)  — норм

так не срабатывает:

текст = «1980,12,05»;

Док.Дата = Дата(текст);

в чем разница??

  

France

22 — 16.12.12 — 23:17

теперь напиши «Дата(чтениеХМЛ.Значение)

  

kap-v-kstu

23 — 16.12.12 — 23:20

Форма.Форма.Форма(81)}: Преобразование значения к типу Дата не может быть выполнено

                  Док.Дата  =  Date(ЧтениеXML.Значение);

  

DrShad

24 — 16.12.12 — 23:20

(21) а ты сам не видишь? в первом случае у тебя три цифры, а во втором текст

  

kap-v-kstu

25 — 16.12.12 — 23:22

И каким образом тогдат передавать текст в функцию дата()??я же беру этот текст из xml

  

DrShad

26 — 16.12.12 — 23:24

(25) то что в (22) что говорит?

  

kap-v-kstu

27 — 16.12.12 — 23:25

Форма.Форма.Форма(81)}: Преобразование значения к типу Дата не может быть выполнено

                 Док.Дата  =  Date(ЧтениеXML.Значение);

  

France

28 — 16.12.12 — 23:26

что интересно в «ЧтениеХМЛ.Значение»..

  

DrShad

29 — 16.12.12 — 23:29

(28) +100500 и откуда оно туда попало

  

kap-v-kstu

30 — 16.12.12 — 23:41

«20150308» Смотрел в отладчике

  

DrShad

31 — 16.12.12 — 23:43

(30) откуда файл получил? у всех нормальных прогов в XML тип дата выгружается как тип дата

  

France

32 — 16.12.12 — 23:44

тут чудеса, тут леший бродит..

разбери на части, и суй в дату..

  

kap-v-kstu

33 — 16.12.12 — 23:49

Файл мне выгружают?даже не знаю кто

  

DrShad

34 — 16.12.12 — 23:54

(33) ну тогда (32) и не парься

  

kap-v-kstu

35 — 16.12.12 — 23:56

ща попробую, спасибо большое_)

Посмотрите что не верно в этом коде

Автор ildarik_58, 27 фев 2013, 09:47

0 Пользователей и 1 гость просматривают эту тему.

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

      ВыборкаПланПроизводства = Документы.ПланПроизводства.Выбрать(НачалоПериода, КонецПериода);

            Пока ВыборкаПланПроизводства.Следующий() Цикл

            ДокументОбъект = Документы.Заказнапроизводство.СоздатьДокумент();
      ДокументОбъект.Заполнить(ПланПроизводства);
      ДокументОбъект.Записать();

         КонецЦикла;

         КонецПроцедуры

Я пытаюсь отобрать документы за период. И на основании документов «ПланПроизводства», создать документ Заказ на производство


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

      ВыборкаПланПроизводства = Документы.ПланПроизводства.Выбрать(НачалоПериода, КонецПериода);

            Пока ВыборкаПланПроизводства.Следующий() Цикл

            ДокументОбъект = Документы.Заказнапроизводство.СоздатьДокумент();
      ДокументОбъект.Заполнить(ВыборкаПланПроизводства.Ссылка);
      ДокументОбъект.Записать();

         КонецЦикла;

         КонецПроцедуры

Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


спасиббо

Добавлено: 27 фев 2013, 13:08


{Форма.Форма.Форма(10)}: Ошибка при вызове метода контекста (Записать)
      ДокументОбъект.Записать();
по причине:
Значение поля «Дата» не может быть пустой датой


Присвойте ДокументОбъект.Дата = ТекущаяДата(); или ту дату которые вы хотите!

Помогли, отблагодари!


в какую часть кода надо вставить эту запись?


Между заполнить и записать

Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


почему тогда он выводит синтаксическую ошибку:{Форма.Форма.Форма(10,39)}: Ожидается символ ‘;’
     ДокументОбъект.Дата = ТекущаяДата()<<?>> (Проверка: Толстый клиент (обычное приложение))

Добавлено: 27 фев 2013, 14:55


Цитата: ildarik_58 от 27 фев 2013, 14:40
почему тогда он выводит синтаксическую ошибку:{Форма.Форма.Форма(10,39)}: Ожидается символ ‘;’
     ДокументОбъект.Дата = ТекущаяДата()<<?>> (Проверка: Толстый клиент (обычное приложение))


Точку с запятой поставьте после ТекущаяДата()


запустил обработку! пару секунд! подумала и никакого результата не произошло!


Люди даже не могут прочитать текст ошибки! Вот что значит просто копировать, а своей головой не думать! :befhbt:

Добавлено: 27 фев 2013, 15:15


Может в выборка вам не чего не дала! проверьте есть ли документы в том периоде что вы задали!

Помогли, отблагодари!


Ermak
30.10.2012 22:41 Прочитано: 6545

Подскажите что не так?
Существует справочник Групповые, в справочнике есть реквизит наименование, район и табличная часть Улицы (Реквизиты — Улица и Дом). Есть файл excel с колонками Район, Улица, Дом. Пытаюсь закачать файл с проверкой по, загрузить в табличную часть улицы и дома с одинаковым районом.Код 1C v 8.х

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

//проверим что файл существует
ФайлНаДиске = Новый Файл(Файл);
Если Не ФайлНаДиске.Существует() Тогда
Предупреждение("Файл не найден!");
Возврат;
КонецЕсли;

Ex = ПолучитьТаблицуExcel(Файл);

Спр = Справочники.Групповые;

НС = 1;
Пока Истина Цикл
Если Спр.НайтиПоРеквизиту("Район", ) = СокрЛП(Ex.Cells(НС,1).Value) Тогда
Об=Спр.СоздатьЭлемент();
К=Об.Улицы.Добавить();
К.Улица = СокрЛП(Ex.Cells(НС,2).Value);
К.Дом = СокрЛП(Ex.Cells(НС,3).Value);

Об.Записать();
Сообщить("-Создан элемент: "+Об.Наименование);
КонецЕсли;

#Если Клиент Тогда
Состояние("Номер обработанной строки: " + НС);
#КонецЕсли
НС = НС + 1;
КонецЦикла;
Ex.Quit();

КонецПроцедуры

Yandex
Возможно, вас также заинтересует

Реклама на портале

Ermak
31.10.2012 11:40 Ответ № 1

????

Ermak
31.10.2012 17:02 Ответ № 2

Подскажите!

Mokey
31.10.2012 17:21 Ответ № 3

а что Вас не устраивает?
код ни о чём.
сравниваете несравнимые типы, это для начала
потом цикл по ИСТИНА где прерывается?


Изменено 31.10.12 17:24:10

Ermak
31.10.2012 17:27 Ответ № 4

*09

Ermak
31.10.2012 17:42 Ответ № 5

А как мне поставить условие, если реквизит РУ = значению в Колонка1 тогда заполняем Табличную часть

Mokey
31.10.2012 17:54 Ответ № 6

Код 1C v 8.х

 
Если СокрЛП(Ex.Cells(НС,1).Value) = "" Тогда Прервать КонецЕсли; //это выход из цикла
ЗначениеРУ = СокрЛП(Ex.Cells(НС,1).Value); //считываем значение
Если НЕ Спр.НайтиПоРеквизиту("Район", ЗначениеРУ).Пустая() Тогда //ищем по реквизиту
.....
КонецЕсли;
Ermak
31.10.2012 18:42 Ответ № 7

че та не добавляет а создает новые пустые документыКод 1C v 8.х

 //проверим что файл существует
ФайлНаДиске = Новый Файл(Файл);
Если Не ФайлНаДиске.Существует() Тогда
Предупреждение("Файл не найден!");
Возврат;
КонецЕсли;

Ex = ПолучитьТаблицуExcel(Файл);

Спр = Справочники.Групповые;

НС = 1;
Пока Истина Цикл
Если СокрЛП(Ex.Cells(НС,1).Value) = "" Тогда
Прервать
КонецЕсли; //это выход из цикла

ЗначениеРУ = СокрЛП(Ex.Cells(НС,1).Value); //считываем значение

Если НЕ Спр.НайтиПоРеквизиту("РУ", ЗначениеРУ).Пустая() Тогда //ищем по реквизиту
Об=Спр.СоздатьЭлемент();
К=Об.Улицы.Добавить();
К.Улица = СокрЛП(Ex.Cells(НС,2).Value);
К.Дом = СокрЛП(Ex.Cells(НС,3).Value);

Об.Записать();
Сообщить("-Создан элемент: "+Об.Наименование);
КонецЕсли;

#Если Клиент Тогда
Состояние("Номер обработанной строки: " + НС);
#КонецЕсли
НС = НС + 1;
КонецЦикла;
Ex.Quit();


Изменено 31.10.12 18:43:56

Mokey
01.11.2012 10:01 Ответ № 8

(7) Ermak, давайте определимся, что Вы хотите получить. В вышеприведённом коде написано, что если нашли элемент с искомым значением, то добавляем новый элемент справочника (создаём) и заполняем его ТЧ.Улицы. Естесственно, что элемент как бы пустой (нет наименования). Я так подозреваю, что Вы хотите отредактировать найденный элемент, тогда надо получить найденный объект, код будет примерно таким:
Код 1C v 8.х

 
ЗначениеРУ = СокрЛП(Ex.Cells(НС,1).Value); //считываем значение
НайденныйЭлемент = Спр.НайтиПоРеквизиту("РУ", ЗначениеРУ); //ищем по реквизиту
Если НЕ НайденныйЭлемент.Пустая() Тогда //проверка, нашли - не нашли
Об=НайденныйЭлемент.ПолучитьОбъект();
Иначе
Об=Спр.СоздатьЭлемент();
Об.РУ=ЗначениеРУ;
КонецЕсли;
//здесь заполняем ТЧ.Улицы объекта
...

Изменено 01.11.12 10:05:06

Ermak
01.11.2012 11:20 Ответ № 9

Вы правильно подозреваете )
Я проверил, сначала стала заполнять и создавать еще пустые новые документы, но теперь опять выдает ошибку
{Форма.Форма.Форма(35)}: Значение не является значением объектного типа (Улицы)
ТЧ = Об.Улицы.Добавить();
Код 1C v 8.х

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

//проверим что файл существует
ФайлНаДиске = Новый Файл(Файл);
Если Не ФайлНаДиске.Существует() Тогда
Предупреждение("Файл не найден!");
Возврат;
КонецЕсли;

Ex = ПолучитьТаблицуExcel(Файл);

Спр = Справочники.Групповые;

НС = 1;
Пока Истина Цикл
Если СокрЛП(Ex.Cells(НС,1).Value) = "" Тогда
Прервать
КонецЕсли; //это выход из цикла

ЗначениеРУ = СокрЛП(Ex.Cells(НС,1).Value); //считываем значение
ЗначениеРУ2 = СокрЛП(Ex.Cells(НС,2).Value);
ЗначениеРУ3 = СокрЛП(Ex.Cells(НС,3).Value);
ЗначениеРУ4 = СокрЛП(Ex.Cells(НС,4).Value);

НайденныйЭлемент = Спр.НайтиПоРеквизиту("РУ", ЗначениеРУ); //ищем по реквизиту

Если НЕ НайденныйЭлемент.Пустая() Тогда //проверка, нашли - не нашли
Об=НайденныйЭлемент.ПолучитьОбъект();
Иначе
Сообщить ("Все!!!")
КонецЕсли;
ТЧ = Об.Улицы.Добавить();
ТЧ.Улица = ЗначениеРУ2;
ТЧ.Дом = ЗначениеРУ3 ;
ТЧ.Кв = ЗначениеРУ4 ;

Об.Записать();
Сообщить("-Создан элемент: "+Об.Наименование);

#Если Клиент Тогда
Состояние("Номер обработанной строки: " + НС);
#КонецЕсли
НС = НС + 1;
КонецЦикла;
Ex.Quit();
КонецПроцедуры

Ничего вроде не делал, а почему ошибка не пойму. И еще вот ТЧ.Улица имеет тип Строка, а мне надо Тип Справочники , если ставлю тип справочники тогда не заполняет.

Mokey
01.11.2012 11:24 Ответ № 10

Ошибку выдаёт потому, что вываливается в ИНАЧЕ, объекта в этом случае нет, допишите тогда выход из процедуры или продолжить цикл.
Код 1C v 8.х

 
Если НЕ НайденныйЭлемент.Пустая() Тогда //проверка, нашли - не нашли
Об=НайденныйЭлемент.ПолучитьОбъект();
Иначе
Сообщить ("Все!!!");
Прервать; // или Продолжить;

КонецЕсли;

Ermak
01.11.2012 11:26 Ответ № 11

Все разобрался с ошибкой, подскажите по этому вопросу как быть

И еще вот ТЧ.Улица имеет тип Строка, а мне надо Тип Справочники , если ставлю тип справочники тогда не заполняет.

Mokey
01.11.2012 11:28 Ответ № 12

С типом Справочник — да, записывать не будет, потому что надо искать ссылку в справочнике и записывать найденную ссылку.
Код 1C v 8.х

 
УлицаСсылка = Справочники.Улицы.НайтиПоНаименованию(ЗначениеРУ2); //например, я не знаю, как Ваш справочник с улицами называется
ТЧ.Улица = УлицаСсылка;
Ermak
01.11.2012 11:45 Ответ № 13

Спасибо получилось.

В форме списка справочника у меня добавлена Табличное поле с колонками Улица, Дом, Квартира , я пытаюсь загрузить данные с формы документа ТЧ.

Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ГрупповыеУлицы.НомерСтроки КАК Колонка4,
| ГрупповыеУлицы.Улица КАК Колонка1,
| ГрупповыеУлицы.Дом КАК Колонка2,
| ГрупповыеУлицы.Кв КАК Колонка3
|ИЗ
| Справочник.Групповые.Улицы КАК ГрупповыеУлицы»;
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТабличноеПоле1.Значение = Результат;

Смысл в чем, в форме списка, когда нажимаешь на строчку в ТП показываются улицы которые принадлежат данной улице из списка.
Я в какое событие поставить?

Mokey
01.11.2012 12:07 Ответ № 14

(13) Ermak, не понял вопроса, к сожалению

Mokey
01.11.2012 12:08 Ответ № 15

вообще есть событие ПриАктивацииСтроки()

Ermak
01.11.2012 12:15 Ответ № 16

При этом событии не работает!

Постараюсь еще раз объяснить:
В Форме списка Табличного поля СправочникСписок добавил еще Табличное поле ТабличноеПоле1 в которой будет выводиться информация с Табличной части Формы Элемента. Т.е нажатии на строчку в СправочникСписок выводится информация ТабличноеПоле1

Mokey
01.11.2012 13:45 Ответ № 17

(15) Mokey,

Процедура СправочникСписокПриАктивацииСтроки()
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ГрупповыеУлицы.НомерСтроки КАК Колонка4,
| ГрупповыеУлицы.Улица КАК Колонка1,
| ГрупповыеУлицы.Дом КАК Колонка2,
| ГрупповыеУлицы.Кв КАК Колонка3
|ИЗ
| Справочник.Групповые.Улицы КАК ГрупповыеУлицы
|ГДЕ //тут условие надо поставить на данные из текущей строки»;
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТабличноеПоле1.Значение = Результат;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
КонецПроцедуры


Изменено 01.11.12 13:49:07

Mokey
01.11.2012 13:51 Ответ № 18

а вообще, подумал сейчас, зачем огород городить? это же ТЧ элемента, поэтому надо в значение ТабличноеПоле1 выставить ТЧ.Улицы и связать два поля поля Ссылке.
Всё делается без единой строчки кода.


Изменено 01.11.12 13:53:13

Ermak
01.11.2012 14:35 Ответ № 19

Спасибо разобрался! )

Я пытаюсь с Excel загрузить документ там есть колонка с датой, я пытаюсь загрузить в реквиз дата и он выдает ошибку

{Форма.Форма.Форма(22)}: Ошибка при вызове метода контекста (Записать)
Об.Записать();
по причине:
Значение поля «Дата» не может быть пустой датой

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

//проверим что файл существует
ФайлНаДиске = Новый Файл(Файл);
Если Не ФайлНаДиске.Существует() Тогда
Предупреждение(«Файл не найден!»);
Возврат;
КонецЕсли;

Ex = ПолучитьТаблицуExcel(Файл);

Док = Документы.Заправка;
НС = 1;
Пока Истина Цикл
Об=Док.СоздатьДокумент();
Об.Дата = СокрЛП(Ex.Cells(НС,1).NumberFormat=»ДД.ММ.ГГГГ»);
Об.Улица = СокрЛП(Ex.Cells(НС,2).Value);
Об.Дом = СокрЛП(Ex.Cells(НС,3).Value);
Об.Кол = СокрЛП(Ex.Cells(НС,4).Value);
Об.РУ = СокрЛП(Ex.Cells(НС,5).Value);
Об.Записать();
Сообщить(«-Создан элемент: «+Об.Улица);

//Если Об.Улица = «» Тогда
// Прервать;
// КонецЕсли;

#Если Клиент Тогда
Состояние(«Номер обработанной строки: » + НС);
#КонецЕсли
НС = НС + 1;
КонецЦикла;
Ex.Quit();

КонецПроцедуры

Что не так?

Mokey
01.11.2012 15:24 Ответ № 20

Пытаетесь в реквизит с типом дата вписать строку. Переводите полученную строку из экселя в дату.

Ermak
01.11.2012 15:42 Ответ № 21

КАК?

Mokey
01.11.2012 15:50 Ответ № 22

Если выложите, что выдаёт выражение Ex.Cells(НС,1).NumberFormat=»ДД.ММ.ГГГГ», то смогу Вам помочь, хотя на вопрос «КАК?» посылаются обычно читать синтаксис-помощник. Да, и ещё, в каком виде в экселе дата забита?

Ermak
01.11.2012 15:58 Ответ № 23

02.01.2007

Mokey
01.11.2012 16:03 Ответ № 24

Тогда надо так:
Дата(СокрЛП(Ex.Cells(НС,1).NumberFormat=»ГГГГММДД»))

Ermak
01.11.2012 16:14 Ответ № 25

А что за переменная Дата ?

У меня строчка такая

Код 1C v 8.х

 Об.Дата = СокрЛП(Ex.Cells(НС,1).NumberFormat="ДД.ММ.ГГГГ");   
Mokey
01.11.2012 16:26 Ответ № 26

Это не переменная, это функция преобразования. Я всё написал.

Ermak
01.11.2012 16:37 Ответ № 27

Выдает ошибку

{Форма.Форма.Форма(17)}: Преобразование значения к типу Дата не может быть выполнено
Об.Дата=Дата(СокрЛП(Ex.Cells(НС,1).NumberFormat=»ГГГГММДД»));

Mokey
01.11.2012 16:48 Ответ № 28

А я Вас просил показать, что на выходе выражения Ex.Cells(НС,1).NumberFormat=»ГГГГММДД»

Ermak
01.11.2012 16:52 Ответ № 29

Выложил обработку и файл Скачивать файлы может только зарегистрированный пользователь!


Изменено 01.11.12 16:53:54

Mokey
01.11.2012 16:55 Ответ № 30

да мне обработка не нужна, данных всё равно нет

Ermak
01.11.2012 17:01 Ответ № 31

перезагрузил с данными (Excel)

Mokey
01.11.2012 17:16 Ответ № 32

битый архив, не буду качать, проблема плёвая

Ermak
01.11.2012 17:18 Ответ № 33

Перегрузил Скачивать файлы может только зарегистрированный пользователь!

Mokey
01.11.2012 17:39 Ответ № 34

Вы мне по-порядку напишите значения выражений:
1. Ex.Cells(НС,1)
2. СокрЛП(Ex.Cells(НС,1).NumberFormat=»ДД.ММ.ГГГГ»)


Изменено 01.11.12 17:40:02

Ermak
01.11.2012 22:19 Ответ № 35

Значение в 1 колонки 02.01.2007

Ermak
02.11.2012 09:05 Ответ № 36

Тип значения : Дата
Состав даты : Дата и время

Mokey
02.11.2012 09:33 Ответ № 37

Тогда Вам надо просто написать:
Об.Дата=Ex.Cells(НС,1);

Пы.Сы. Архив всё равно битый))

Ermak
02.11.2012 09:47 Ответ № 38

Ошибку выдает

{Форма.Форма.Форма(27)}: Ошибка при вызове метода контекста (Записать)
Об.Записать();
по причине:
Значение поля «Дата» не может быть пустой датой

Перезалил на обменник http://zalil.ru/33917826

Mokey
02.11.2012 11:57 Ответ № 39

я Вас столько раз просил прислать мне то-то и то-то….
1. Ex.Cells(НС,1) — это комобъект
2.Ex.Cells(НС,1).NumberFormat=»ДД.ММ.ГГГГ» — это сравнение, соответственно возвращает булево

3. Ex.Cells(НС,1).Value — строка с Вашей датой, именно строка, и чтобы преобразовать её в дату надо функцию написать, например, я такую написал:

Код 1C v 8.х

 
Функция ПреобразоватьВДату(ДатаСтрокой)
Если (ДатаСтрокой="00000000") или (ДатаСтрокой="") тогда
Возврат Дата(0001,01,01);
Иначе
Если СтрДлина(Сред(ДатаСтрокой,7)) > 2 Тогда
ГодСтрокой = Сред(ДатаСтрокой,7);
Иначе
ГодСтрокой = "20"+Сред(ДатаСтрокой,7);
КонецЕсли;
Возврат Дата(Число(ГодСтрокой),Число(Сред(ДатаСтрокой,4,2)),Число(Сред(ДатаСтрокой,1,2)));
КонецЕсли;
КонецФункции //

Тогда применительно в Вашей задаче:
Об.Дата = ПреобразоватьВДату(СтрЗаменить(СокрЛП(Ex.Cells(НС,1).Value),».»,»»));

Ermak
02.11.2012 12:02 Ответ № 40

Спасибо большое, я не знал теперь буду знать!!!!! )

Ermak
02.11.2012 12:03 Ответ № 41

Вопрос закрыт!

Ermak
02.11.2012 12:07 Ответ № 42

А что может быть такое, загрузка пошла, дошла до 700 строки и выдала ошибку

{Форма.Форма.Форма(83)}: Преобразование значения к типу Дата не может быть выполнено
Возврат Дата(Число(ГодСтрокой),Число(Сред(ДатаСтрокой,4,2)),Число(Сред(ДатаСтрокой,1,2)));

Mokey
02.11.2012 12:21 Ответ № 43

Посмотрите в экселе 700-ю строку

Ermak
02.11.2012 12:25 Ответ № 44

Смотрел тоже сам что и все

Ermak
02.11.2012 12:38 Ответ № 45

вычислил строка 654 последнюю загружает там значение Даты 31.01.2007 а вот на строка следующая 655 значение 01.02.2007 выдает ошибку

{Форма.Форма.Форма(83)}: Преобразование значения к типу Дата не может быть выполнено
Возврат Дата(Число(ГодСтрокой),Число(Сред(ДатаСтрокой,4,2)),Число(Сред(ДатаСтрокой,1,2)));

Mokey
02.11.2012 12:49 Ответ № 46

Проанализруйте, что в ячейке в выражении СтрЗаменить(СокрЛП(Ex.Cells(НС,1).Value),».»,»»)

Ermak
02.11.2012 12:54 Ответ № 47

В том то и дело что формат ячеек у всех одинаковый и значение у ее 01.02.2007

Ermak
02.11.2012 14:21 Ответ № 48

Загружаю данные для документа выдает ошибку

{Форма.Форма.Форма(82)}: Преобразование значения к типу Дата не может быть выполнено
Возврат Дата(Число(ГодСтрокой),Число(Сред(ДатаСтрокой,4,2)),Число(Сред(ДатаСтрокой,1,2)));

Почему опять?

E_Migachev
02.11.2012 14:28 Ответ № 49

(48) Ermak, смотри чему равно на момент ошибки значение ДатаСтрокой, видимо в excel файле что-то не то стоит в считываемой ячейке

Ermak
02.11.2012 14:44 Ответ № 50

Все там стоит я не понимаю почему опять не грузит *15
Я залил на обменник http://zalil.ru/33918739

Ermak
02.11.2012 15:03 Ответ № 51

А может быть проблема из за того что у меня язык стоит EN а не RU, мне надо менять в панели управления????

E_Migachev
02.11.2012 15:07 Ответ № 52

язык не причем, проверяй отладчиком входные из екселя данные

Ermak
02.11.2012 16:22 Ответ № 53

Я переделал функцию Преобразовать в дату и все пошлоКод 1C v 8.х

  стрДата_ = СокрЛП(СтрЗаменить(стрДата,".",""));
датДата = Сред(стрДата_,5)+Сред(стрДата_,3,2)+Лев(стрДата_,2);
Если СтрДлина(стрДата_)=6 Тогда
датДата = "20"+датДата;
КонецЕсли;
Возврат Дата(датДата);

Подскажите вот я закачиваю информацию в справочник, есть реквизит Тип Справочники.Имя я прописал

Код 1C v 8.х

 УлицаСсылка = Справочники.Адреса.НайтиПоНаименованию(ЗначениеРУ2);   

а если я закачиваю в документ с реквизитом типом Справочники.Имя, как тогда прописать?

E_Migachev
02.11.2012 16:53 Ответ № 54

Имя — Это такой справочник? а зачем его в документ?

Ermak
02.11.2012 17:02 Ответ № 55

У документа есть реквизит :
Район-Поле ввода Ти Значения — Справочник.Район

Когда загружаю данные то значение пустое

E_Migachev
02.11.2012 17:40 Ответ № 56

код загрузки покажи

Ermak
03.11.2012 00:36 Ответ № 57

Код 1C v 8.х

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

//проверим что файл существует
ФайлНаДиске = Новый Файл(Файл);
Если Не ФайлНаДиске.Существует() Тогда
Предупреждение("Файл не найден!");
Возврат;
КонецЕсли;

Ex = ПолучитьТаблицуExcel(Файл);

Док = Документы.Потери;
НС = 1;

ЗначениеР1 = СокрЛП(Ex.Cells(НС,4).Value);
ЗначениеР2 = СокрЛП(Ex.Cells(НС,4).Value);

Пока Истина Цикл

Об=Док.СоздатьДокумент();
Об.Дата = ИзСтрокиВДату(СокрЛП(Ex.Cells(НС,1).Value2));
Об.Район = ЗначениеР1;
Об.Кол = СокрЛП(Ex.Cells(НС,3).Value);
Об.Вид = ЗначениеР2;
Об.Записать(РежимЗаписиДокумента.Проведение);

Сообщить("-Создан элемент: "+Об.Дата + "---"+"№"+""+ НС);

#Если Клиент Тогда
Состояние("Номер обработанной строки: " + НС);
#КонецЕсли
НС = НС + 1;
КонецЦикла;

Ex.Quit();

КонецПроцедуры

Mokey
06.11.2012 11:16 Ответ № 58

По аналогии ищите в справочнике Район элемент с наименованием ЗначениеР1.

Ermak
06.11.2012 11:44 Ответ № 59

Спасибо разобрался, все загрузилось Код 1C v 8.х

 //проверим что файл существует
ФайлНаДиске = Новый Файл(Файл);
Если Не ФайлНаДиске.Существует() Тогда
Предупреждение("Файл не найден!");
Возврат;
КонецЕсли;

Ex = ПолучитьТаблицуExcel(Файл);

Док = Документы.Потери;
НС = 1;

ЗначениеР1 = СокрЛП(Ex.Cells(НС,2).Value);
ЗначениеР2 = СокрЛП(Ex.Cells(НС,4).Value);

Пока Истина Цикл

РайонСслка = Справочники.Район.НайтиПоНаименованию(ЗначениеР1);
ВидСсылка = Справочники.ВидПотери.НайтиПоНаименованию(ЗначениеР2);

Об=Док.СоздатьДокумент();
Об.Дата = ИзСтрокиВДату(СокрЛП(Ex.Cells(НС,1).Value2));
Об.Район = РайонСслка;
Об.Кол = СокрЛП(Ex.Cells(НС,3).Value);
Об.Вид = ВидСсылка;
Об.Записать(РежимЗаписиДокумента.Проведение);

Сообщить("-Создан элемент: "+Об.Дата + "---"+"№"+""+ НС);

#Если Клиент Тогда
Состояние("Номер обработанной строки: " + НС);
#КонецЕсли
НС = НС + 1;
КонецЦикла;

Ex.Quit();

но с данными беда какая та, загрузились одинаковые данные, с одним районом, хотя в файле данные разные

Mokey
06.11.2012 12:07 Ответ № 60

Потому что Вы ЗначениеР1 вне цикла вычислили и подсовываете его каждый раз

Ermak
06.11.2012 13:40 Ответ № 61

Разобрался спасибо большое!

Подсказка: Для быстрого поиска ответов — используйте ‘Поиск’

Здравствуйте. При повторном закрытии 1С вознила трудность в групповой обработке. До данной операции период был закрыт благополучно, изменений не было вообще никаких и нигде, кроме коммента в реализации, из-за чего и пришлось все перезакрывать. Пишет так:

 Обработка Списание с расчетного счета АК00-000167 от 31.10.2018 18:00:00 не выполнена по причине: 
{Обработка.ГрупповоеПерепроведениеДокументов.МодульМенеджера(1986)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ОбработкаПроведения’: {ОбщийМодуль.УчетНДФЛ.Модуль(1726)}: Ошибка при вызове метода контекста (Записать): Запись не верна! Значение поля «Дата получения дохода» не может быть пустым! (Регистр накопления: Расчеты налогоплательщиков с бюджетом по НДФЛ; Номер строки: 5)
Не пойму что не так. Где посмотреть? Подскажите пожалуйста. Работаю в 1С:Предприятие 8.3 (8.3.12.1685), конфигурация Бухгалтерия предприятия, редакция 3.0 (3.0.67.67).

г. Усть-Лабинск9 219 баллов

Добрый день! Попробуйте запустить проверки на физическую и логическую целостность, предварительно сделав копию базы

Заполнить и подать уведомление об исчисленных суммах налогов и взносов

Цитата (Чурсина Ирина):Списание с расчетного счета АК00-000167 от 31.10.2018 18:00:00

Откройте этот документ и проведите его. Проводит? Если нет, то посмотрите движения этого документа Дт/Кт — Закладка Расчеты налогоплательщиков с бюджетом по НДФЛ. Есть в регистре поле Дата получения дохода.

Цитата (Чурсина Ирина):Значение поля «Дата получения дохода» не может быть пустым!

Скорей всего в начислении ЗП — поле получение дохода Не заполнилось.

Не понимаю почему выдает ошибку
{Документ.ЧекККМ.Форма.ФормаДокумента.Форма(1439)} : Ошибка при вызове метода контекста (Записать)
НовыйДокумент.Записать();
по причине:
Значение поля «Дата» не может быть пустой датой

По отладчику проверил все работает, а только доходит до НовыйДокумент.Записать(); выдает ошибку
Вот мой код:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    Запрос = Новый Запрос (
    "ВЫБРАТЬ
    |   ЧекККМ.Дата,
    |   ЧекККМ.Склад,
    |   ЧекККМ.СуммаДокумента,
    |   ЧекККМ.Ответственный.Наименование КАК Ответственный,
    |   ЧекККМ.Товары.(
    |       Номенклатура
    |   ),
    |   ЧекККМ.Оплата.(
    |       ВидОплаты
    |   )
    |ИЗ
    |   Документ.ЧекККМ КАК ЧекККМ");
    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() Цикл
        ВыборкаПоНоменклатуре = Результат.Товары.Выбрать();
        ВыборкаПоОплате = Результат.Оплата.Выбрать();
        Дата = Формат(Результат.Дата, "ДФ=""дд ММММ гггг 'г.'");
        Склад = Результат.Склад;
        СуммаДокумента = Формат(Результат.Ответственный, "ЧРД=','; ЧДЦ=2; ЧГ=0");
        Пока ВыборкаПоНоменклатуре.Следующий() Цикл
            Номенклатура = ВыборкаПоНоменклатуре.Номенклатура;
        КонецЦикла;
        Пока ВыборкаПоОплате.Следующий() Цикл
            ВидОплаты = ВыборкаПоОплате.ВидОплаты;
        КонецЦикла;
        НовыйДокумент = Документы.ОтчетЧек_ЕИ.СоздатьДокумент();
        НовыйДокумент.ДатаДок = ТекущаяДата();
        НовыйДокумент.Склад = Склад;
        НовыйДокумент.СуммаДок = СуммаДокумента;
        НовыйДокумент.Ответственый = Ответственный;
        НовыйДокумент.Номенклатура = Номенклатура;
        НовыйДокумент.ВидОплаты = ВидОплаты;
        НовыйДокумент.Записать();
    КонецЦикла;

Добавлено через 4 минуты
Все разобрался!

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Студворк — интернет-сервис помощи студентам

Не понимаю почему выдает ошибку
{Документ.ЧекККМ.Форма.ФормаДокумента.Форма(1439)}: Ошибка при вызове метода контекста (Записать)
НовыйДокумент.Записать();
по причине:
Значение поля «Дата» не может быть пустой датой

По отладчику проверил все работает, а только доходит до НовыйДокумент.Записать(); выдает ошибку
Вот мой код:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    Запрос = Новый Запрос (
    "ВЫБРАТЬ
    |   ЧекККМ.Дата,
    |   ЧекККМ.Склад,
    |   ЧекККМ.СуммаДокумента,
    |   ЧекККМ.Ответственный.Наименование КАК Ответственный,
    |   ЧекККМ.Товары.(
    |       Номенклатура
    |   ),
    |   ЧекККМ.Оплата.(
    |       ВидОплаты
    |   )
    |ИЗ
    |   Документ.ЧекККМ КАК ЧекККМ");
    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() Цикл
        ВыборкаПоНоменклатуре = Результат.Товары.Выбрать();
        ВыборкаПоОплате = Результат.Оплата.Выбрать();
        Дата = Формат(Результат.Дата, "ДФ=""дд ММММ гггг 'г.'");
        Склад = Результат.Склад;
        СуммаДокумента = Формат(Результат.Ответственный, "ЧРД=','; ЧДЦ=2; ЧГ=0");
        Пока ВыборкаПоНоменклатуре.Следующий() Цикл
            Номенклатура = ВыборкаПоНоменклатуре.Номенклатура;
        КонецЦикла;
        Пока ВыборкаПоОплате.Следующий() Цикл
            ВидОплаты = ВыборкаПоОплате.ВидОплаты;
        КонецЦикла;
        НовыйДокумент = Документы.ОтчетЧек_ЕИ.СоздатьДокумент();
        НовыйДокумент.ДатаДок = ТекущаяДата();
        НовыйДокумент.Склад = Склад;
        НовыйДокумент.СуммаДок = СуммаДокумента;
        НовыйДокумент.Ответственый = Ответственный;
        НовыйДокумент.Номенклатура = Номенклатура;
        НовыйДокумент.ВидОплаты = ВидОплаты;
        НовыйДокумент.Записать();
    КонецЦикла;

Добавлено через 4 минуты
Все разобрался!

  • Ошибка при вызове метода контекста выбрать недопустимое значение параметра параметр номер 3
  • Ошибка при вызове метода контекста закончитьгруппустрок
  • Ошибка при вызове метода контекста записать запись не верна
  • Ошибка при вызове метода контекста выбрать использование синхронных методов на клиенте запрещено
  • Ошибка при вызове метода контекста записать 1с отчетность