Вопрос № 123117: День добрый! Подскажите, пожалуйста, что не так в этом коде. Выбирает только первую строку из журнала. Если не прерывать цикл - то вообще ничего, кроме сообщения не выводит.
Зараннее извиняюсь, может вопрос тупой. Но как-то трудно для меня понима...Вопрос № 123230: Здравствуйте эксперты. Подскажите пожалуйста как в dbf-файл перенести дату со временем.
Я прописала код как в приложении, выгружаю все в файл, потом открыла через Excel этот файл и проверила, там те пораметры, которые у меня были в формате Дата+в...Вопрос № 123239: В общих таблицах (ТОРГ-12) вбивала руками дату и фамилию (1000 накладных в день). При сохранении конф - не сохраняется. В других таблицах (общих) сохраняется прекрасно. что это может быть?...
Вопрос № 123.117
День добрый! Подскажите, пожалуйста, что не так в этом коде. Выбирает только первую строку из журнала. Если не прерывать цикл - то вообще ничего, кроме сообщения не выводит.
Зараннее извиняюсь, может вопрос тупой. Но как-то трудно для меня понимается логика 1С-программ =))
Приложение:
Отправлен: 14.02.2008, 14:27
Вопрос задал: stahh (статус: 4-ый класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 17)
Отвечает: Коровин Александр
Здравствуйте, stahh!
Оператор "Прервать" лишний, цикл будет продолжаться, пока есть выбранные документы.
Ответ отправил: Коровин Александр (статус: 1-ый класс)
Ответ отправлен: 14.02.2008, 14:41
Отвечает: Dmitry Stashenko
Здравствуйте, stahh!
Давайте сразу расставим точки над "и". Во-первых, мы выбираем не строки журнала, а документы, принадлежащие (или не принадлежащие) журналу. Во-вторых, ИспользоватьЖурнал() уместно использовать (простите за тавтологию) только в том случае, когда мы выбираем из одного журнала все принадлежащие ему виды документов, а поскольку мы выбираем конкретный вид документа (ФормированиеБригады), то ИспользоватьЖурнал() вовсе необязательно (т.е. если бы у нас в Журнал.УчетТранспорта входили скажем Документ.ФормированиеБригады
и, например, Документ.ТТН, то тогда Док = СоздатьОбъект("Документ"); Док.ИспользоватьЖурнал("УчетТранспорта") позволил бы выбрать оба вида документов из журнала, а так мы выбираем конкретный вид документа, и нам не важен журнал, поскольку один документ принадлежит не более чем одному журналу. В-третьих, поскольку у вас стоит Прервать, то цикл выбирает только один документ, и в зависимости от того, совпадает ли в этом документе Маши
на и Машина в текущем документе, выдает либо Сообщить() с заполнением реквизитов текущего документа, либо Предупреждение(). Это логично только в том случае, если в один день может быть создан только один Документ.ФормированиеБригады (не на машину один, а вообще один, если же один на машину, то Прервать надо поставить в ветке условия Если Машина=Док.Машина), а все остальные надо игнорировать. Да и то, не факт, что именно первый документ в выборке будет нужным. Причем, при сравнении Машина = Док.Машина, оба
реквизита обязаны быть одного типа. И вы пишите, что кроме сообщения (или предупреждения?) ничего не выводит. А что собственно должно еще выводить? Имеете в виду, что должно заполнить реквизиты "Водитель", "грузчик_1", "грузчик_2"? Так может проблема в том, что не выполняется условие Машина = Док.Машина? И еще, если Прервать убрать, и цикл выберет все документы за ТекущуюДату, реквизиты "Водитель" и т.д. заполнятся из последнег
о документа в выборке, в котором Машина = Док.Машина. Это так и должно быть? Или все же предполагается, что на одну машину создается не больше одного документа ФормированиеБригады?
Ответ отправил: Dmitry Stashenko (статус: Студент)
Ответ отправлен: 14.02.2008, 21:00 Оценка за ответ: 5 Комментарий оценки: Спасибо что не оставляете мои вопросы без внимания =))
Отвечает: Сергей Максименко [Elric]
Здравствуйте, stahh!
Вы сказали о том, что происходит, но как-то забыли упомянуть о том, что должно происходить вместо этого. Ну, что ж, будем исходить из того, что известно...
Сначала о том, что у Вас происходит сейчас.
Формируется выборка документов за текущий день, получается первый документ из выборки, проверяется совпадает ли его Машина с нужной (с Ваших слов, совпадает), в случае совпадения выводится сообщение и присваиваются значения Водитель, Грузчик_1, Грузчик_2 данными из полученного документа (в случае несовпадения выводится предупреждение и присваиваются пустые строки), после чего цикл по выборке прерывается командой Прервать и все остальные документы игнорируются.
Если уберете команду Прервать, будут проверены все остальные документы, и по каждому из них будет выдаваться либо сообщение, либо предупреждение. И не спорьте с этим, пожалуйста :) Единственная рациональная причина, по которой у Вас без команды Прервать могло не выводиться вообще ничего, это отсутствие на тот момент документов в журнале УчетТранспорта за текущую дату, т.е. отсутсвие чистоты эксперимента (если можно так выразиться).
А вот дальше не знаю что Вам и посоветовать. Ведь неизвестно чего Вы хотите... Проверить, есть ли хоть один документ с нужной машиной за текущую дату? Тогда код должен быть таким как у меня в Приложении. Собрать статистику по всем документам за этот день? Тогда код должен быть немного другим... В общем, определяйтесь, а мы поможем реализовать.
Приложение:
--------- В творчестве рождается истина
Ответ отправил: Сергей Максименко [Elric] (статус: Профессионал) Украина, Киев Тел.: (044) 22-88-369 Организация: МАКСЕР, "1С:Предприятие" в Киеве Адрес: г. Киев WWW:www.makser.com.ua ---- Ответ отправлен: 15.02.2008, 18:18 Оценка за ответ: 5 Комментарий оценки: Спасибо что не оставляете мои вопросы без внимания =))
Вопрос № 123.230
Здравствуйте эксперты. Подскажите пожалуйста как в dbf-файл перенести дату со временем.
Я прописала код как в приложении, выгружаю все в файл, потом открыла через Excel этот файл и проверила, там те пораметры, которые у меня были в формате Дата+время перенеслись только в формате Дата. Как можно это исправить? В синтаксисе-пощнике ничего про это дельного не нашла.
Приложение:
Отправлен: 15.02.2008, 10:44
Вопрос задала: 2kasandra (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Костюк Игорь Викторович
Здравствуйте, 2kasandra!
При объявлении формата полей DBF не надо указывать формат даты. Нужно использовать строковый формат.
ДБФ.поля.Добавить("TIME_IN","S",18); //дата+время выезда
Ответ отправил: Костюк Игорь Викторович (статус: 1-ый класс)
Ответ отправлен: 15.02.2008, 10:50
Отвечает: Крюков Р.А.
Здравствуйте, 2kasandra!
Причина Вашей проблемы в следующем DBF формат поддерживает структуру полей в виде
Структура записей с данными.
C Символьный
N Числовой { 0 - 9 }
L Логический { Y y T t N n F f ? } да/нет/неизвестно
M Примечание 10 цифр с номером блока в .dbt
D Дата ГГГГММДД
Поэтому в данном случае лучше хранить строковое представление и преобразовывать при необходимости.
--------- Отвечаю только на вопросы в тему.
Ответ отправил: Крюков Р.А. (статус: 4-ый класс)
Ответ отправлен: 15.02.2008, 10:59 Оценка за ответ: 5 Комментарий оценки: Спасибо за подробный ответ.
Вопрос № 123.239
В общих таблицах (ТОРГ-12) вбивала руками дату и фамилию (1000 накладных в день). При сохранении конф - не сохраняется. В других таблицах (общих) сохраняется прекрасно. что это может быть?
Отвечает: Vlad Skorochod
Здравствуйте, Подкосова Надежда! Посмотрите в каталоге информационной базы есть папка EXTFORMS, а вней папка PRNFORMS. Там вы быстрее всего найдете файл 1CBT-12.MXL Это и есть таблица печатной формы ТОРГ-12. И исправлять необходимо в этой таблице. Преимущество хранения измененной таблицы во внешнем файле, в том что при обновлении конфигурации он не изменится. (А также в том, что изменять такую таблицу можно не внося изменения в конфигурацию и следовательно не прерывая для этого работу пользователей)
Ответ отправил: Vlad Skorochod (статус: 9-ый класс)
Ответ отправлен: 15.02.2008, 11:57